작성
·
287
7
컬렉션을 파라미터로 넣었는데요.
제가 넣은 컬렉션의 size보다 쿼리에서 생기는in 파라미터가 많아지는 현상이 있습니다.
2의 배수로 늘어나는것으로 보이고 제가 설정하지 않은 값은 마지막 값을 반복해서 설정하는데요. 혹시 이 현상이 왜 발생하는지 알 수 있을까요?
간략한 예입니다.
< collection size 1>
where medicine0_.id in (?) : 1
< collection size 2>
where medicine0_.id in (?, ?) : 1,2
< collection size 3>
where medicine0_.id in (?, ?, ?, ?) : 1,2,3,3
< collection size 4>
where medicine0_.id in(?, ?, ?, ?) : 1,2,3,4
< collection size 5>
where medicine0_.id in (?, ?, ?, ?, ?, ?, ?, ?) : 1,2,3,4,5,5,5,5
< collection size 6>
where medicine0_.id in (?, ?, ?, ?, ?, ?, ?, ?) : 1,2,3,4,5,6,6,6
< collection size 7>
where medicine0_.id in (?, ?, ?, ?, ?, ?, ?, ?) : 1,2,3,4,5,6,7,7
< collection size 8>
where medicine0_.id in (?, ?, ?, ?, ?, ?, ?, ?) : 1,2,3,4,5,6,7,8
< collection size 9>
where medicine0_.id in (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) : 1,2,3,4,5,6,7,8, 9,9,9,9,9,9,9,9
답변 2
1
안녕하세요. digitcom님 좋은 질문입니다.
query.in_clause_parameter_padding 이라는 옵션이 최신 하이버네이트에서는 기본으로 켜져있기 때문에 발생하는 현상인데요.
결론부터 말씀드리면, 항상 키고 사용하는 것이 자원을 훨씬 효율적으로 사용할 수 있습니다.
자세한 내용은 다음 블로그들을 보시면 이해가 되실꺼에요^^
https://meetup.toast.com/posts/211
https://vladmihalcea.com/improve-statement-caching-efficiency-in-clause-parameter-padding/
0
아무리 검색해도 나오지 않더니 검색어가 정확했으면 알 수 있었던 내용이네요.. ㅎㅎ (clause_parameter_padding)
친절한 답변 감사합니다. 명확하게 이해되었습니다.