내 응용 프로그램에서 JPA를 사용하여 Hibernate를 사용하고 있으며 최대 절전 모드가 내 로그 파일에 많은 조인을 포함하는 흥미로운 SQL 쿼리를 생성한다는 것을 알았습니다. 응용 프로그램에는 현재 많은 사용자가 없기 때문에 최대 절전 모드로 생성되는 쿼리 중 일부는 데이터베이스 크기가 커질 때 문제가 발생할 것이라고 걱정됩니다.SQL 쿼리 결과의 결과는 데이터베이스의 크기에 따라 달라 집니까?
나는 생성 된 쿼리 계획을보기 위해 EXPLAIN 명령을 통해 최대 절전 모드로 생성 된 일부 SQL 쿼리를 실행했다.
데이터베이스의 크기에 따라 EXPLAIN의 결과가 달라 집니까? 데이터베이스가 커질 때 쿼리 계획자는 동일한 SQL 쿼리에 대해 다른 계획을 생성합니까?
최대 절전 모드에서 생성 된 SQL 쿼리에 대한 SQL 쿼리 계획을 개발/배포주기의 어느 시점에서 검토해야합니까? EXPLAIN을 사용할 적절한시기는 언제입니까?
데이터베이스가 너무 작아서 0.5 초 미만의 복잡한보기가 실행되는 것과 상관없이 모든 쿼리가 문제가 될 때 어떻게 결과를 확인할 수 있습니까?
내 응용 프로그램의 데이터베이스로 Postgres 9.1을 사용하고 있지만 위의 질문에 대한 일반적인 대답에 관심이 있습니다.
스마트 데이터베이스는 * 통계 *를 사용하여 계획을 작성하는 방법에 대해 교육 된 추측을하도록 도와줍니다. 이러한 * 통계 *는 새로운 데이터로 인해 시간이 지남에 따라 변경 될 수 있습니다. 정확한 범위, 수집, 힌트 등은 매우 데이터베이스 별입니다. 그러나 이것은 [지금 당장 걱정할 사항이 아닙니다] 깨끗한 모델을 만드는 데 집중하십시오. –
@pst 그래서 데이터베이스가 아직 작을 때 설명하는 것이 무의미하다는 것을 의미합니다. – ams
곧 릴리스 될 예정인 9.2보다 오래된 PostgreSQL 버전의 경우, 명령문을'PREPARE'하고 Hibernate가 명령문을 실행하는 방법과 일치하도록'EXPLAIN EXECUTE'해야합니다. 준비된 문과 준비되지 않은 문에서 쿼리 계획은 9.1 이하에서 다를 수 있습니다. –