사용자 도구

사이트 도구


java:hibernate:performance

차이

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

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
다음 판 양쪽 다음 판
java:hibernate:performance [2022/01/14 15:45]
kwon37xi
java:hibernate:performance [2022/02/15 14:06]
kwon37xi [Join Fetch]
줄 11: 줄 11:
   * [[java:quickperf|QuickPerf]] 로 lazy loading 발생여부 확인 가능(실제로는 쿼리가 날라간 갯수를 테스트 코드로 검증가능)   * [[java:quickperf|QuickPerf]] 로 lazy loading 발생여부 확인 가능(실제로는 쿼리가 날라간 갯수를 테스트 코드로 검증가능)
  
-==== Join Fetch ====+===== N+1 ===== 
 +  * [[https://github.com/adgadev/jplusone|adgadev/jplusone: Tool for automatic detection and asserting "N+1 SELECT problem" occurences in JPA based Spring Boot Java applications and finding origin of JPA issued SQL statements in general]] 
 +  * https://stackoverflow.com/questions/97197/what-is-the-n1-selects-problem-in-orm-object-relational-mapping/39696775?stw=2#39696775 
 +  * [[https://github.com/vladmihalcea/db-util/tree/master/scripts/ramdisk/windows|vladmihalcea/db-util: If you are using JPA and Hibernate, this tool can auto-detect N+1 query issues during testing.]] 
 + 
 +===== Join Fetch =====
   * JPQL 에서 ''join fetch''를 통해서 (inner join등 명시) N + 1 대신에 미리 join 문으로 객체를 로딩할 수 있다.   * JPQL 에서 ''join fetch''를 통해서 (inner join등 명시) N + 1 대신에 미리 join 문으로 객체를 로딩할 수 있다.
 +
  
 ===== @org.hibernate.annotations.BatchSize ===== ===== @org.hibernate.annotations.BatchSize =====
줄 37: 줄 43:
   * ''IN'' 절 쿼리에 대해서 2의 제곱단위로 쿼리를 생성한다.   * ''IN'' 절 쿼리에 대해서 2의 제곱단위로 쿼리를 생성한다.
   * [[https://vladmihalcea.com/improve-statement-caching-efficiency-in-clause-parameter-padding/|How to improve statement caching efficiency with IN clause parameter padding - Vlad Mihalcea]]   * [[https://vladmihalcea.com/improve-statement-caching-efficiency-in-clause-parameter-padding/|How to improve statement caching efficiency with IN clause parameter padding - Vlad Mihalcea]]
-  * 위 옵션을 켜지 않으면, ''IN'' 절 쿼리가 Query Plan Cache를 모두 점유해서 메모리가 부족해질수 있고, 메모리가 남아돌더라도 캐시를 모두 ''IN'' 절이 점유해버리므로 별로 좋지 못하다.+  * 위 옵션을 켜지 않으면, ''IN'' 절 쿼리가 ''QueryPlanCache''를 모두 점유해서 메모리가 부족해질수 있고, 메모리가 남아돌더라도 캐시를 모두 ''IN'' 절이 점유해버리므로 별로 좋지 못하다.
   * 또한 RDBMS 의 경우 그 자체 execution plan cache 가 있는데, 이 옵션을 켜면 그에 대한 hit 율도 높아지게 된다.   * 또한 RDBMS 의 경우 그 자체 execution plan cache 가 있는데, 이 옵션을 켜면 그에 대한 hit 율도 높아지게 된다.
  
java/hibernate/performance.txt · 마지막으로 수정됨: 2024/03/04 12:47 저자 kwon37xi