Query Plan Cache
참고
Query Plan Cache
- Hibernate가 SQL을 작성할 수 있도록, JPQL과 Criteria의 쿼리들은 실행 전에 모두 Abstract Syntax Tree로 파싱된다.
- Abstract Syntax Tree란?
- 쿼리 컴파일에는 시간이 걸리므로, Hibernate는 Query Plan Cache로 성능을 보완한다.
- 네이티브 쿼리의 경우,
- Hibernate는 named parameter와 쿼리 반환 타입에 대한 정보를 추출하여 ParameterMetadata에 저장한다.
- Hibernate는 모든 실행에 대해서 먼저 Query Plan Cache를 확인하고
- 사용 가능한 실행 계획이 없는 경우에 새 계획을 생성하고 나중에 사용할 수 있도록 실행 계획을 Query Plan Cache에 저장해둔다.
- 사용 가능한 실행 계획이 있는 경우에 그것을 사용한다.
설정
- Query Plan Cache는 다음과 같은 속성을 줄 수 있다.
- hibernate.query.plan_cache_max_size
- Query Plan Cache의 최대 크기 설정
- 디폴트는 2048
- hibernate.query.plan_parameter_metadata_max_size
- Query Plan Cache의 ParameterMetadata 인스턴스의 최대 숫자 설정
- 디폴트는 128
- hibernate.query.plan_cache_max_size
- Query Plan Cache의 최대 크기보다 더 많은 수의 쿼리를 실행하게 되면
- Hibernate가 쿼리를 컴파일 해야하기 때문에 느려지게 된다.
This post is licensed under CC BY 4.0 by the author.