사용자 도구

사이트 도구


java:hibernate:performance

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
다음 판 양쪽 다음 판
java:hibernate:performance [2022/12/05 15:56]
kwon37xi [Join Fetch]
java:hibernate:performance [2022/12/07 14:05]
kwon37xi [hibernate.query.in_clause_parameter_padding=true]
줄 47: 줄 47:
   * 위 옵션을 켜지 않으면, ''IN'' 절 쿼리가 ''QueryPlanCache''를 모두 점유해서 메모리가 부족해질수 있고, 메모리가 남아돌더라도 캐시를 모두 ''IN'' 절이 점유해버리므로 별로 좋지 못하다.   * 위 옵션을 켜지 않으면, ''IN'' 절 쿼리가 ''QueryPlanCache''를 모두 점유해서 메모리가 부족해질수 있고, 메모리가 남아돌더라도 캐시를 모두 ''IN'' 절이 점유해버리므로 별로 좋지 못하다.
   * 또한 RDBMS 의 경우 그 자체 execution plan cache 가 있는데, 이 옵션을 켜면 그에 대한 hit 율도 높아지게 된다.   * 또한 RDBMS 의 경우 그 자체 execution plan cache 가 있는데, 이 옵션을 켜면 그에 대한 hit 율도 높아지게 된다.
 +<note warning>
 +[[database:mysql|MySQL]] 의 경우 in 쿼리의 ID 갯수가 너무 크면 index 를 타지 않고, 통계를 사용하는 경우가 있다.
  
 +특히 200 개 기준인게 보통인데, ''in_clause_parameter_padding'' 은 2^n 단위로 증가하므로 128개를 초과하면 in 파라미터가 그 다음인 256 개가 돼 버리면서 인덱스를 안타게 될 수 있다.
 +
 +in 에 들어가는 값이 128 을 초과하지 않게 파티셔닝하고 관리하는게 좋다. ''@BatchSize'', ''hibernate.default_batch_fetch_size'' 도 참조.
 +
 +  * ''eq_range_index_dive_limit'' : default 200 개 초과시 index 안탐.
 +  * ''range_optimizer_max_mem_size'' : default 8mb 초과시 index 안탐.
 +</note>
 ===== Hibernate Query Plan Cache ===== ===== Hibernate Query Plan Cache =====
   * [[https://vladmihalcea.com/hibernate-query-plan-cache/|A beginner’s guide to the Hibernate JPQL and Native Query Plan Cache - Vlad Mihalcea]]   * [[https://vladmihalcea.com/hibernate-query-plan-cache/|A beginner’s guide to the Hibernate JPQL and Native Query Plan Cache - Vlad Mihalcea]]
java/hibernate/performance.txt · 마지막으로 수정됨: 2024/03/04 12:47 저자 kwon37xi