back end/java

Hibernate 성능 튜닝 Tips

노루아부지 2025. 3. 10. 15:38
반응형

1. 개발 과정에서 성능 이슈 찾기

Hibernate에는 각 세션별 내부 통계를 확인할 수 있도록 출력해주는 기능이 있습니다. Spring Data JPA를 사용한다면 아래와 같이 설정하면 됩니다. (문제점을 찾을 때만 사용)

spring.jpa.properties.hibernate.generate_statistics=true
logging.level.org.hibernate.stat=DEBUG

 

추가적으로 다음과 같이 설정을 하면 느린 쿼리에 대한 정보를 얻을 수 있습니다.

spring.jpa.properties.hibernate.session.events.log.LOG_QUERIES_SLOWER_THAN_MS=10

 

 

 

2. in_clause_parameter_padding 옵션 사용

Hibernate 5.2.18 이후 버전에서는 in_clause_parameter_padding을 항상 true로 둘 것을 권장합니다.

spring.jpa.properties.hibernate.query.in_clause_parameter_padding=true

 

이 옵션 사용 시 IN 절 쿼리에 대해서 쿼리 수를 제한하여 과도한 메모리 사용을 줄일 수 있습니다.

 

# MySQL의 경우 in 쿼리의 ID 갯수가 너무 크면 index를 사용하지 않고, 통계를 사용하는 경우가 있습니다. 200개 기준인게 보통인데, in_clause_parameter_padding 옵션의 경우 2^n 단위로 증가하므로 128개를 초과하면 256개가 되어버리기 때문에 index를 사용하지 않을 수 있습니다.
따라서 in에 들어가는 id의 갯수는 128을 초과하지 않게 관리하는게 좋습니다.

 

[참고 사이트]

https://kwonnam.pe.kr/wiki/java/hibernate/performance

https://www.manty.co.kr/bbs/detail/develop?id=98

 

 

728x90
반응형
loading