2009-02-06 16 views
1

우리는 OpenJPA1.1과 Oracle DB를 백엔드 스토리지로 사용하는 지속성 계층을 사용하여 애플리케이션을 개발 중입니다. subselects (내 질문은 Solving JPA query finding the last entry in connected list 참조) 쿼리를 사용합니다.haevy가로드 된 데이터베이스가있는 쿼리에서 subselect를 사용하여 고려해야 할 사항은 무엇입니까?

직장 동료들은 현재 수천 명의 동시 사용자가 사용하는 수천 명의 고객 데이터로 데이터베이스가 채워지므로 성능 문제가 발생할 수 있다고 언급했습니다.

내 질문은 :이 상황에서 쿼리에서 subselects를 사용하는 "모범 사례"가 있습니까? 이 일을 통해 무엇을 고려해야합니까?

답변

1

나는 그것이 문제라는 것을 먼저 증명할 것이다. 더미 데이터로 데이터베이스를로드하고 데이터베이스가 커질수록 쿼리가 어떻게 수행되는지 확인할 수 있습니다. 그렇지 않으면 문제가되지 않는 무언가를 최적화하는 데 시간을 할애하고 있습니다.

한 가지 생각할 사항. 내가 일한 모든 곳에서 일이 붕괴되는 곳은 수천 건이 아니라 수백만 건입니다. 당신은이 시스템을 가지고 있고 잠시 동안 잘 작동하고 더 많은 하드웨어를 던지더라도 느려지 기 시작합니다. 제가 현재 일하고있는 곳은 1998 년까지 그의 역사 표에 약 7 천만 개의 레코드가 있습니다. 일부 쿼리의 성능은 결과적으로 끔찍하며이 문제를 해결하기 위해 많은 시간을 보내고 있습니다.

하지만 어느 시점에서 당신은 정말로 물어야합니다. 거래 시스템에 4 년 이상 데이터를 보관해야합니까? 아니면 심지어 4 개월? 이 시간 제한은 비즈니스 요구에 따라 다르지만, 진행중인 작업을 처리하는 데 필요한 데이터만으로 트랜잭션 시스템을 유지하고 데이터웨어 하우스에 기록 레코드를 보관하는 경우. 가끔 이전 데이터를 쿼리해야 할 가능성이 있기 때문에 전반적인 실적을 향상시킬 수 있습니다. 왜 최근 데이터를 유지해야할까요?

이렇게 생각하면 장기간에 걸림돌이 많이 남습니다.