spring:
jpa:
properties:
hibernate:
batch_fetch_style: padded
default_batch_fetch_size: 100
YAML
๋ณต์ฌ
default_batch_fetch_size ๋ฅผ ์ฌ์ฉํ์ฌ in (?) ์ ์ ํ์ฉํ ๋์ prepared statement ์์๋ (?) ์ ๊ฐ์๋ฅผ ๋ฏธ๋ฆฌ ์ ํด๋๋๋ค. ์ด์ ๋ ๋ช ๊ฐ์ ? ๋ฅผ ํด์ผํ ์ง ๋ชจ๋ฅด๋ ์ํฉ์์(๋์ ์ด๋๊น) ๊ฐฏ์๋งํผ ๋์ ์ผ๋ก ๊ณ์ ๋ง๋ค๋ค๋ณด๋ฉด ์ฑ๋ฅ์ ๋ถ๋ฆฌํ๊ธฐ๋๋ฌธ์ด๋ค. ๊ทธ๋์ default_batch_fetch_size ์ ๊ฐ์๊ฐ 100 ์ด๋ผ๋ฉด, ? ๊ฐ์๊ฐ 1~10, 100, 50, 25, 12 ์ด๋ ๊ฒ 14๊ฐ๋ฅผ ๋ฏธ๋ฆฌ ์ธํ
ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ฝ in ์ ๋ก ๊ฐ์ ธ์์ผ ํ ๋ฐ์ดํฐ๊ฐ 30๊ฐ๋ผ๋ฉด (?*25) ์ธ๊ฑฐ ํ๋, (?*5) ์ธ๊ฑฐ ํ๋ ์ด 2๊ฐ์ ์ฟผ๋ฆฌ๊ฐ ๋ฐ์ํ๋ค. ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋๋ in (?) ์ ์ ๊ฐ์๋ log2N - 2~3๊ฐ + 10๊ฐ์ด๋ค. 10 ์ด์๊น์ง ๋๋๊ธฐ 2๋ฅผ ๊ณ์ ํด์ ๊ทธ๋ ๋ค.
batch_fetch_style ์๋ legacy, padded, dynamic ์ด ์๋๋ฐ, ์์์ ์ค๋ช
ํ ๋ฐฉ์์ด legacy ์ด๊ณ dynamic ์ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํ ์บ์ฑ์ ํ์ง ์๊ณ ๊ทธ๋ฅ ๋์ ์ผ๋ก ๋ค ๋ง๋ค์ด๋ฒ๋ฆฌ๋ ๋ฐฉ์์ด๋ค. ์ฐ๋ฆฌ๊ฐ ์ค์ ํ padded ๋ legacy ์ ๋น์ทํ๋ค. ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํ ์ฟผ๋ฆฌ ์บ์ฑํ๋ ๊ฒ์ ๊ฐ์ผ๋ legacy ๋ ๋ฐ์ดํฐ๋ณด๋ค ์ ์ ์, padded ๋ ๋ฐ์ดํฐ๋ณด๋ค ๋ง์ ์๋ก ์ฟผ๋ฆฌ๋ฅผ ๊ฐ์ ธ์จ๋ค. ์๋ฅผ ๋ค์ด ์์ ์์์์ ๋ฐ์ดํฐ๊ฐ 30๊ฐ๋ผ๋ฉด (?*50) ์ธ๊ฑฐ๋ฅผ ๊ฐ์ ธ์์ ์ฌ์ฉํ๋ค.
๊ทธ๋ ๋ค๋ฉด ๋จ๋ ? 20๊ฐ์๋ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๋ฃ์๊น?
in ์ ๋ก ๊ฐ์ ธ์ฌ ๋ฐ์ดํฐ์ ๋ฐ์ธ๋ฉ ํ๋ผ๋ฏธํฐ๋ 31~60 ๊น์ง์๋ค. ๊ทธ๋์ ๋๋จธ์ง 20๊ฐ์๋ ์ฒซ ๋ฐ์ดํฐ๋ฅผ ๋๋ฏธ๋ก ๋ฃ๋๋ค. ๊ฐ์ ธ์จ 20๊ฐ์ ๋ฐ์ดํฐ๋ ์๋ง jpa ์ ๋์ผ์ฑ ๋ณด์ฅ์ ์ํด ๊ฐ์ ๊ฐ์ฒด์ฌ์ ์ฌ๋ผ์ง๋๋ฏํ๋ค.
in ์ ์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ์ ๊ฐ์๊ฐ ์๋น์ค ํน์ฑ์ ์์ฃผ ๋ณํ๊ธฐ๋๋ฌธ์ dynamic ๋ณด๋ค๋ padded ๋ฅผ ์ด์ฉํ๊ธฐ๋ก ํ์๋ค.