Post

๐Ÿ’™ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค - ์ธ๋ฑ์Šค๋ž€ ๋ฌด์—‡์ด๊ณ  ์ผ๋ฐ˜์ ์ธ ์›๋ฆฌ๋Š” ์–ด๋– ํ•œ์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.

๐Ÿ’™ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค - ์ธ๋ฑ์Šค๋ž€ ๋ฌด์—‡์ด๊ณ  ์ผ๋ฐ˜์ ์ธ ์›๋ฆฌ๋Š” ์–ด๋– ํ•œ์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.

์ธ๋ฑ์Šค

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•ด ๊ฒ€์ƒ‰ ๋Šฅ๋ ฅ์„ ํ–ฅ์ƒ ์‹œ์ผœ์ฃผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

์ฆ‰, ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰์„ ๋น ๋ฅด๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ

  • ๋งˆ์น˜ ์ฑ…์˜ ๋ชฉ์ฐจ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋„๊ตฌ๋กœ, ํŠน์ • ์ปฌ๋Ÿผ์ด๋‚˜ ์—ฌ๋Ÿฌ ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด ๊ฒ€์ƒ‰์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ๋•Œ ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ์™€ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ํฌํ•จํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑํ•ด ๋น ๋ฅด๊ฒŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

  • ๋งŒ์•ฝ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์กฐํšŒํ•  ์‹œ์—๋Š” ํ…Œ์ด๋ธ” ์ „์ฒด๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” Full Scan์ด ์ˆ˜ํ–‰๋จ์œผ๋กœ์จ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋–จ์–ด์ง€๊ฒŒ ๋œ๋‹ค.

์ผ๋ฐ˜์ ์ธ ์›๋ฆฌ

์ž๋ฃŒ ๊ตฌ์กฐ

์ธ๋ฑ์Šค๋Š” ์ฃผ๋กœ ํŠธ๋ฆฌ ๊ตฌ์กฐ(๋ณดํ†ต B-ํŠธ๋ฆฌ)๋กœ ๊ตฌํ˜„๋œ๋‹ค. ํŠธ๋ฆฌ ๊ตฌ์กฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, B-ํŠธ๋ฆฌ์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ๋•Œ ํŠธ๋ฆฌ์˜ ๊นŠ์ด๋ฅผ ๋”ฐ๋ผ๊ฐ€๋ฉฐ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์‹œ๊ฐ„ ๋ณต์žก๋„ O(log N)์œผ๋กœ ์ค„์—ฌ์ค€๋‹ค.

๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ ์ตœ์ ํ™”

DB์—์„œ ์ธ๋ฑ์Šค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ, ์ „์ฒด ํ…Œ์ด๋ธ”์„ ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ๋А๋ ค์ง„๋‹ค. ํ•˜์ง€๋งŒ ์ธ๋ฑ์Šค๊ฐ€ ์žˆ์œผ๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์ง„ ํƒ์ƒ‰(binary search) ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

๋น ๋ฅธ ์ ‘๊ทผ

์ธ๋ฑ์Šค๋Š” ํ•ด๋‹น ์ปฌ๋Ÿผ์˜ ๊ฐ’์„ ์ •๋ ฌํ•˜๊ฑฐ๋‚˜ ํ•ด์‹œ๊ฐ’์„ ์‚ฌ์šฉํ•ด ๋น ๋ฅธ ๊ฒ€์ƒ‰์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด WHERE ์ ˆ์— ์‚ฌ์šฉ๋˜๋Š” ์ปฌ๋Ÿผ์ด๋‚˜ JOIN ์ ˆ์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ปฌ๋Ÿผ์— ์ธ๋ฑ์Šค๋ฅผ ์ ์šฉํ•˜๋ฉด ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

์žฅ์ 

  1. ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ๋นจ๋ผ์ง„๋‹ค.

  2. ํฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ ์กฐํšŒ ์‹œ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋œ๋‹ค.

  3. JOIN๊ณผ ORDER BY ์ฟผ๋ฆฌ์—์„œ ์„ฑ๋Šฅ์ด ๊ฐœ์„ ๋œ๋‹ค.

๋‹จ์ 

  1. ์ธ๋ฑ์Šค ์ƒ์„ฑ๊ณผ ์œ ์ง€ ๊ด€๋ฆฌ์— ์ถ”๊ฐ€์ ์ธ ๊ณต๊ฐ„๊ณผ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค.

  2. ๋ฐ์ดํ„ฐ ์‚ฝ์ž…, ์‚ญ์ œ, ์ˆ˜์ • ์‹œ ์ธ๋ฑ์Šค๋„ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ๊ฒฝ์šฐ

  1. ๊ทœ๋ชจ๊ฐ€ ์ž‘์ง€ ์•Š์€ ํ…Œ์ด๋ธ”

  2. INSERT, UPDATE, DELETE๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ์ปฌ๋Ÿผ

  3. JOIN, WHERE, ORDER BY์— ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ปฌ๋Ÿผ

  4. ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต๋„๊ฐ€ ๋‚ฎ์€ ์ปฌ๋Ÿผ

๋ชจ๋“  ์š”์†Œ์— ์ธ๋ฑ์Šค๋ฅผ ๊ฑธ์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ?

์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด INSERT, DELETE, UPDATE ์ฟผ๋ฆฌ๋ฌธ์„ ์‹คํ–‰ํ•  ๋•Œ ๋ณ„๋„์˜ ๊ณผ์ •์ด ์ถ”๊ฐ€์ ์œผ๋กœ ๋ฐœ์ƒํ•œ๋‹ค. INSERT์˜ ๊ฒฝ์šฐ ์ธ๋ฑ์Šค์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๊ทธ๋งŒํผ ์„ฑ๋Šฅ ์†์‹ค์ด ์ƒ๊ธด๋‹ค. DELETE์˜ ๊ฒฝ์šฐ ์ธ๋ฑ์Šค์— ์กด์žฌํ•˜๋Š” ๊ฐ’์€ ์‚ญ์ œํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉ ์•ˆํ•œ๋‹ค๋Š” ํ‘œ์‹œ๋กœ ๋‚จ๊ฒŒ๋œ๋‹ค.

๋”ฐ๋ผ์„œ ROW์˜ ์ˆ˜๋Š” ๊ทธ๋Œ€๋กœ์ธ๋ฐ ์ด๋Ÿฌํ•œ ์ž‘์—…์ด ๋ฐ˜๋ณต๋˜๋ฉด ์‹ค๋ฐ์ดํ„ฐ๊ฐ€ 10๋งŒ๊ฑด์ธ๋ฐ ๋ฐ์ดํ„ฐ๊ฐ€ 100๋งŒ๊ฑด์ด ์žˆ๋Š” ๊ฒฐ๊ณผ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

UPDATE์˜ ๊ฒฝ์šฐ INSERT, DELETE์˜ ๋ฌธ์ œ์ ์„ ๋™์‹œ์— ์ˆ˜๋ฐ˜ํ•œ๋‹ค. ์ด์ „ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋˜๊ณ  ๊ทธ ์ž๋ฆฌ์— ์ƒˆ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ค๋Š” ๊ฐœ๋…์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ปฌ๋Ÿผ์„ ์ด๋ฃจ๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹์— ๋”ฐ๋ผ์„œ ์ธ๋ฑ์Šค์˜ ์„ฑ๋Šฅ์ด ์•…์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰, ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ…Œ์ด๋ธ”์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ์†๋„์™€ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜๋Š” ์žฅ์ ์ด ์กด์žฌํ•˜์ง€๋งŒ ์ธ๋ฑ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€ ์ž‘์—…์ด ํ•„์š”ํ•˜๋ฉฐ ์ถ”๊ฐ€ ์ €์žฅ ๊ณต๊ฐ„ ๋˜ํ•œ ํ•„์š”ํ•˜๋‹ค. ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹์— ๋”ฐ๋ผ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ๊ณ  ์ธ๋ฑ์Šค๊ฐ€ ์ ์šฉ๋œ ์ปฌ๋Ÿผ์— ์‚ฝ์ž…, ์‚ญ์ œ, ์ˆ˜์ •์ด ์žฆ๋‹ค๋ฉด ์ธ๋ฑ์Šค ๋˜ํ•œ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์ด ๋‚ฎ์•„์ง„๋‹ค. ๋˜ํ•œ ์ธ๋ฑ์Šค๋Š” ์ œ๊ฑฐ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ โ€˜์‚ฌ์šฉํ•˜์ง€ ์•Š์Œโ€™์œผ๋กœ ๋‚จ๊ฒจ๋‘๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๊ฐ€ ๊ณผ๋„ํ•˜๊ฒŒ ์ปค์งˆ ์ˆ˜ ์žˆ๊ธฐ์— ๋ชจ๋“  ์š”์†Œ์— ์ธ๋ฑ์Šค๋ฅผ ๊ฑธ์ง€ ์•Š๋Š”๋‹ค.

๋ณตํ•ฉ์ธ๋ฑ์Šค๋ž€?

DB์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปฌ๋Ÿผ๋“ค์„ ์กฐํ•ฉํ•˜์—ฌ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

๋‹จ์ผ ์ธ๋ฑ์Šค(Single Index)๊ฐ€ ํ•œ ๊ฐœ์˜ ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ๊ณผ๋Š” ๋‹ฌ๋ฆฌ, ๋ณตํ•ฉ ์ธ๋ฑ์Šค๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปฌ๋Ÿผ์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

๋ณตํ•ฉ ์ธ๋ฑ์Šค ์žฅ์ 

์˜ˆ์‹œ๋กœ ํ•™์ƒ ์ •๋ณด์˜ DB์—์„œ ํ•™์ƒ ์ด๋ฆ„๊ณผ ํ•™๋ฒˆ์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒฝ์šฐ ๋‹จ์ผ ์ธ๋ฑ์Šค๋กœ ์ด๋ฆ„๊ณผ ํ•™๋ฒˆ์„ ๋ชจ๋‘ ์ธ๋ฑ์‹ฑํ•œ๋‹ค๋ฉด DB๋Š” ์ธ๋ฑ์Šค์— ํ•ด๋‹น๋˜๋Š” ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ํ•„ํ„ฐ๋งํ•˜๋Š” ๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค.

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

  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปฌ๋Ÿผ์„ ๋™์‹œ์— ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์–ด์„œ ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ๊ฐœ์„ ๋œ๋‹ค.

  • ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปฌ๋Ÿผ์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ์ธ๋ฑ์Šค์˜ ์šฉ๋Ÿ‰์ด ์ค„์–ด๋“ ๋‹ค.

  • ์ฟผ๋ฆฌ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์กฐ๊ฑด์„ ๊ฐ€์ง€๊ณ  ์žˆ์„ ๋•Œ ์ตœ์ ํ™”๋œ ์‹คํ–‰ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ณตํ•ฉ ์ธ๋ฑ์Šค ์ปฌ๋Ÿผ ์„ ํƒ

  1. where์ ˆ์—์„œ and ์กฐ๊ฑด์œผ๋กœ ์ž์ฃผ ๊ฒฐํ•ฉ๋˜์–ด ์‚ฌ์šฉ๋˜๋ฉด์„œ ๊ฐ๊ฐ์˜ ๋ถ„ํฌ๋„ ๋ณด๋‹ค ๋‘ ๊ฐœ ์ด์ƒ์˜ ์ปฌ๋Ÿผ์ด ๊ฒฐํ•ฉ๋  ๋•Œ ๋ถ„ํฌ๋„๊ฐ€ ์ข‹์•„์ง€๋Š” ์ปฌ๋Ÿผ๋“ค

  2. ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๊ณผ ์กฐ์ธ์˜ ์—ฐ๊ฒฐ๊ณ ๋ฆฌ๋กœ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ปฌ๋Ÿผ๋“ค

  3. order by์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ปฌ๋Ÿผ๋“ค

  4. ํ•˜๋‚˜ ์ด์ƒ์˜ ํ‚ค ์ปฌ๋Ÿผ ์กฐ๊ฑด์œผ๋กœ ๊ฐ™์€ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ๋“ค์ด ์ž์ฃผ ์กฐํšŒ๋  ๋•Œ

์ •๋ฆฌ

์ธ๋ฑ์Šค๋Š” DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ๋กœ, ์ฃผ๋กœ ํŠธ๋ฆฌ ๊ตฌ์กฐ(B-ํŠธ๋ฆฌ)๋กœ ๊ตฌํ˜„๋œ๋‹ค. ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ „์ฒด ํ…Œ์ด๋ธ”์„ ๊ฒ€์ƒ‰ํ•˜์ง€ ์•Š๊ณ  ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ์ฃผ๋กœ WHERE ์ ˆ์ด๋‚˜ JOIN ์ ˆ์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ปฌ๋Ÿผ์— ์ ์šฉ๋˜๋ฉฐ, ๋ณตํ•ฉ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์กฐ๊ฑด์„ ๋™์‹œ์— ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ธ๋ฑ์Šค๋Š” ์ถ”๊ฐ€์ ์ธ ์ €์žฅ ๊ณต๊ฐ„์„ ์š”๊ตฌํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์‚ฝ์ž…, ์‚ญ์ œ, ์ˆ˜์ • ์‹œ ์ธ๋ฑ์Šค๋ฅผ ๊ฐฑ์‹ ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋‹ค.

This post is licensed under CC BY 4.0 by the author.