2.5 ๐Ÿ’ป Index ์‹ค์Šต#

  • ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์ ์ ˆํ•œ Index๋ฅผ ์„ค์ •ํ•จ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ ์—‘์„ธ์Šค ์„ฑ๋Šฅ์„ ์ตœ์ ํ™” ํ•˜๊ณ  ์ฟผ๋ฆฌ ์‹คํ–‰์‹œ๊ฐ„์„ ๋‹จ์ถ•์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ด๋ฒˆ ์‹คํ—˜์—์„œ๋Š” Postgresql์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํžˆ B-Tree Index์™€ Brin Index๋ฅผ ๋น„๊ตํ•ด๋ด„์œผ๋กœ์จ ์ƒํ™ฉ์—๋”ฐ๋ฅธ Index์„ ํƒ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

  • ์ž์‹ ์˜ ์ปดํ“จํŒ… ๋ฆฌ์†Œ์Šค, ๋ฐ์ดํ„ฐ ํฌ๊ธฐ, ๊ฒ€์ƒ‰์กฐ๊ฑด, ๋ฐ์ดํ„ฐ ํŠน์„ฑ ๋“ฑ ๋‹ค์–‘ํ•œ ์š”์†Œ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ Index๋ฅผ ์„ค์ •ํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

B-Tree Index (Balanced Tree Index)#

  • B-Tree ์ธ๋ฑ์Šค๋Š” ํ‚ค ๊ธฐ๋ฐ˜์œผ๋กœ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ปฌ๋Ÿผ์˜ ๊ฐ’์ด ๋‹ค์–‘ํ•˜๊ณ  ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ธ๋ฑ์Šค์˜ ํšจ๊ณผ๋ฅผ ์ตœ๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ผ๋ฐ˜์ ์ธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์—์„œ ๊ท ๋“ฑํ•œ ์†๋„๋ฅผ ๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

BRIN Index (Block Range Index)#

  • BRIN ์ธ๋ฑ์Šค๋Š” ํŽ˜์ด์ง€์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ฝ‘์•„์„œ ์ธ๋ฑ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • ๋Œ€๋Ÿ‰์˜ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ๋‚˜ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ์™€ ๊ฐ™์ด ์—ฐ์†์ ์ธ ํŠน์„ฑ์„ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ์—์„œ ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค.

์‹คํ—˜#

  • ์‹ค์Šต Repository๋ฅผ Cloneํ•˜์—ฌ ์ง์ ‘ ์‹ค์Šตํ•ด๋ณด๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

  • ์ค€๋น„๋œ ์‹ค์Šตํ™˜๊ฒฝ์€ PK์„ค์ •์ด ๋˜์–ด์žˆ์ง€ ์•Š๊ณ , ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๊ณ ๋ ค๊ฐ€ ๋˜์–ด์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ค€๋น„ํ•œ ์‹ค์Šต1: 126,269,471๊ฑด์˜ row์— ๋Œ€ํ•ด ์‹คํ—˜ (๋‚ ์งœ์— ๋Œ€ํ•ด์„œ ์ธ๋ฑ์Šค)

  • ์ธ๋ฑ์Šค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ: 15868.808 ms

  • B Tree Index๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ: 738.754 ms (2705 MB)

  • Brin Index๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ: 1085.056 ms (192 kB)

  • Index๋ฅผ ์„ค์ •ํ•จ์œผ๋กœ์จ ์„ฑ๋Šฅ์ด ๊ฐœ์„ ๋˜๋Š” ์ •๋„๋Š” ๋น„์Šทํ•˜์ง€๋งŒ Index ํฌ๊ธฐ๋Š” Brin Index๊ฐ€ ํ›จ์”ฌ ์ž‘์Šต๋‹ˆ๋‹ค.

์ค€๋น„ํ•œ ์‹ค์Šต2: 126,269,471๊ฑด์˜ row์— ๋Œ€ํ•ด ์‹คํ—˜ (Alphabet์— ๋Œ€ํ•ด์„œ ์ธ๋ฑ์Šค)

  • ์ธ๋ฑ์Šค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ: 17285.917 ms

  • B Tree Index๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ: 15827.413 ms (835 MB)

  • Brin Index๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ: 17893.296 ms (152 kB)

  • ์ธ๋ฑ์Šค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์— ๋น„ํ•ด์„œ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ๋‚˜์•„์ง€์ง€ ์•Š์•˜์Œ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Brin Index์˜ ๊ฒฝ์šฐ์—” ์ธ๋ฑ์Šค๊ฐ€ ์—†๋Š”๊ฒฝ์šฐ๋ณด๋‹ค ์˜คํžˆ๋ ค ๋Š๋ ค์กŒ์Œ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.