query.in_clause_parameter_padding
๋ด์ฉ
IN
์ ์ ์ฌ์ฉํ ๋ ์ฑ๋ฅ ์ต์ ํ์ ๊ด๋ จ๋ ์ค์ hibernate.query.in_clause_parameter_padding=true
๋ก ์ค์ ํ๋ฉด Hibernate๋IN
์ ์ ํ๋ผ๋ฏธํฐ ๊ฐฏ์๋ฅผ 2์ ๊ฑฐ์์ ๊ณฑ์ผ๋ก padding ํ๋ค.1-2๊ฐ โ 2๊ฐ๋ก ํจ๋ฉ
3-4๊ฐ โ 4๊ฐ๋ก ํจ๋ฉ
5-8๊ฐ โ 8๊ฐ๋ก ํจ๋ฉ
9-16๊ฐ โ 16๊ฐ๋ก ํจ๋ฉ
์ ์ฌ์ฉํ ๊น?
๋ฐ์ดํฐ๋ฒ ์ด์ค๋
IN
์ ์ด์ฉํ ์ฟผ๋ฆฌ ์, ํ๋ผ๋ฏธํฐ ๊ฐฏ์๊ฐ ๋ค๋ฅด๋ฉด ๋งค๋ฒ ์๋ก์ด ์คํ๊ณํ์ ๋ง๋ค๊ณ , ์บ์ํด์ผํจ์?
ํ๋ผ๋ฏธํฐ ๊ฐฏ์๊ฐ ๋ค๋ฅด๋ฉด ๋ค๋ฅธ ์ฟผ๋ฆฌ๋ก ์ธ์ํ๊ธฐ ๋๋ฌธ
์ด๋ฅผ ๋ฐฉ์ง ํ๊ธฐ ์ํด์
hibernate.query.in_clause_parameter_padding=true
์ต์ ์ ์ฌ์ฉํ๋ฉด, ๋น์ทํIN
์ ์ฟผ๋ฆฌ ๋ผ๋ฆฌ ๊ฐ์ ์คํ ๊ณํ์ ๊ณต์ ํ ์ ์์.๊ทธ๋ฌ๋ฏ๋ก ๋งค๋ฒ ์คํ๊ณํ์ ์์ฑํ์ง ์์๋ ๋๋ฏ๋ก, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ถํ๊ฐ ๊ฐ์
์ฃผ์ํ ์
๋ฐ๋์ ์ฑ๋ฅ ํฅ์์ด ์ผ์ด๋๋ ๊ฒ์ ์๋.
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ฆ๊ฐํ ์๋ ์์.
padding ์ผ๋ก ๋ถ์กฑํ ๊ฐฏ์๋งํผ ์ฑ์ฐ๋ฏ๋ก, ์ด ๋ถ๋ถ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ์ถ๊ฐ๋จ
binding ๋ณ์๋ฅผ ์ํ ์ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ ํ์ํ๊ณ .
์ด๋ฅผ ์ ์ดํ๊ธฐ ์ํด์
hibernate.query.in_clause_parameter_padding_max_size
์ต์ ๋ ์กด์ฌํจ.ํน์ ํฌ๊ธฐ ์ด์์์๋ ํจ๋ฉ์ ํ์ง ์๋๋ก ์ค์ ํ๋ ๋ฐฉ๋ฒ
์ฌ์ฉ ์์
hibernate.query.in_clause_parameter_padding=false
๋ผ๋ฉด..
3๊ฐ ํ๋ผ๋ฏธํฐ์ฉ ์คํ ๊ณํ ์์ฑ ๋ฐ ์ ์ฅ
4๊ฐ ํ๋ผ๋ฏธํฐ์ฉ ์คํ ๊ณํ ์์ฑ ๋ฐ ์ ์ฅ
2๊ฐ ํ๋ผ๋ฏธํฐ์ฉ ์คํ ๊ณํ ์์ฑ ๋ฐ ์ ์ฅ
์ฆ ๊ฐ์ ํ ์ด๋ธ์ ์กฐํํ์ง๋ง 3๊ฐ์ ์คํ ๊ณํ์ด ์์ฑ๋จ.
๊ทธ๋ฌ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ฆ๊ฐ
SQL ํ์ฑ -> ์คํ๊ณํ ์์ฑ -> ์คํ๊ณํ ์ ์ฅ...
hibernate.query.in_clause_parameter_padding=true
์ฌ์ฉํ๋ฉด..
์คํ ๊ณํ์ 2๊ฐ๋ง ์ ์ฅ (2,4)
๋์ผํ ์คํ๊ณํ ์ฌ์ฌ์ฉ
๋ ์ ์ ์คํ๊ณํ์ผ๋ก DB์ ๋ถํ ๊ฐ์
๊ฒฐ๋ก
IN
์ฟผ๋ฆฌ์ ๋ฐ๋ผ ์๊ธฐ๋ ์คํ๊ณํ ์์ฑ ๋ฑ์ผ๋ก ์ธํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ถํ๋ฅผ ๋ง๊ธฐ์ํด ์ฌ์ฉํ๋ ์ต์ ๋ฐ๋์ ์ฑ๋ฅํฅ์์ ๋ณด์ด๋ ๊ฒ์ ์๋๊ณ , ์ด๋ก ์ธํ trade-off (๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ฆ๊ฐ)
์ฐธ๊ณ
https://www.baeldung.com/java-hibernate-in-clause-padding
https://medium.com/@im_zero/hibernate-query-plan-cache-oom-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0-298f3feae93a
https://hyos-dev-log.tistory.com/29
Last updated
Was this helpful?