๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

CS

[DB] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค(Index)

๐Ÿ’ก ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค, ๋งŽ์ด ๋“ค์–ด๋งŒ ๋ดค์ง€ ์ •๋ฆฌ ์ข€ ํ•˜์ž !

 ๋…ธ์…˜์—์„œ ๋ณด๊ธฐ

 

๐Ÿ”– ์ธ๋ฑ์Šค๋ž€ ?

  • Index ๋ž€, RDBMS์—์„œ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ 
  • TABLE ์˜ ์ปฌ๋Ÿผ์„ **์ƒ‰์ธํ™”(๋”ฐ๋กœ ํŒŒ์ผ๋กœ ์ €์žฅ)**ํ•˜์—ฌ→ **๊ฒ€์ƒ‰ ์†๋„๋ฅผ ํ–ฅ์ƒ**์‹œํ‚จ๋‹ค.
  • → ๊ฒ€์ƒ‰์‹œ ํ•ด๋‹น ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ Full Scan ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, **์ƒ‰์ธํ™” ๋˜์–ด์žˆ๋Š” INDEX ํŒŒ์ผ์„ ๊ฒ€์ƒ‰**ํ•˜์—ฌ
  • ์ธ๋ฑ์Šค ์ž๋ฃŒ๊ตฌ์กฐ๋กœ๋Š” Hash Table, B-Tree ์—์„œ ํŒŒ์ƒ๋œ B+Tree

 

โ“์ธ๋ฑ์Šค ํ•„์š”์„ฑ

  • ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ๋กœ๋ถ€ํ„ฐ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜์—ฌ ๋น ๋ฅธ ์†๋„๋กœ ์กฐํšŒ/๊ฒ€์ƒ‰ ํ•„์š”
    • ๊ธฐ์กด์— item_info ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜๋Š” total row = 2846 ๊ฐœ์ด๋ฉฐ, ์œ„์˜ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•œ ๊ฒฝ์šฐ ์ „์ฒด row ๊ฐœ์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” 2846 ๊ฐœ์˜ row ๊ฐ€ ์กฐํšŒ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.๋ฐ์ดํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์—†๋‹ค๋ฉด ํ…Œ์ด๋ธ” ๋‚ด์—์„œ ์ „์ฒด ์Šค์บ”์„ ํ†ตํ•ด ์กฐํšŒํ•ด์•ผ ํ•จ(Full Table Scan)
      • **Full Scan, Table Scan**
        • SQL ์„œ๋ฒ„์—์„œ๋Š” ๋ฐ์ดํ„ฐ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ์•„๋ฌด๋Ÿฐ ์ˆœ์„œ์—†์ด ์ €์žฅ๋œ๋‹ค.
        • ์ด๋•Œ ๋ฐ์ดํ„ฐ ์ €์žฅ ์˜์—ญ์„ Heap ์ด๋ผ๊ณ  ํ•˜๋ฉฐ,→ Full Scan, Table Scan
        • Heap ์—์„œ๋Š” ์ธ๋ฑ์Šค๊ฐ€ ์—†๋Š” ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ๋•Œ ์ „์ฒด ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€์˜ ์ฒ˜์Œ ๋ ˆ์ฝ”๋“œ๋ถ€ํ„ฐ ~ ๋ ํŽ˜์ด์ง€์˜ ๋งˆ์ง€๋ง‰ ๋ ˆ์ฝ”๋“œ๊นŒ์ง€ ๋ชจ๋‘ ์กฐํšŒํ•˜์—ฌ ๊ฒ€์ƒ‰ ์กฐ๊ฑด๊ณผ ๋น„๊ต ํ•œ๋‹ค
        • ๋งŽ์€ ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ ์ผ๋ถ€๋งŒ ์ฐพ์„ ๋•Œ Full Scan ์„ ํ•  ๊ฒฝ์šฐ, ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง„๋‹ค.
        • ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ์— ๋น„ํšจ์œจ์ ์ด๋ฏ€๋กœ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜์—ฌ SELECT ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์„ ๋†’์ด๋„๋ก ํ•œ๋‹ค.
      • ์•„๋ž˜์™€ ๊ฐ™์ด Explain ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ, ๊ฒ€์ƒ‰๋œ ROW ๋Š” ์•„๋ž˜์— ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

  • ์ธ๋ฑ์Šค๋Š” **๋ฉ”๋ชจ๋ฆฌ**์— ์ €์žฅ

 

๐Ÿ“‘ ์ธ๋ฑ์Šค์˜ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์›๋ฆฌ

 

๐Ÿ—ƒ๏ธ ํ•ด์‹œ ํ…Œ์ด๋ธ”(Hash Table)

 

 

  • ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ (Key, Value)๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ์ค‘ ํ•˜๋‚˜๋กœ, ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰์— ์œ ์šฉ
  • ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ Key ๊ฐ’์„ ์ด์šฉํ•ด ๊ณ ์œ ํ•œ Index ๋ฅผ ์ƒ์„ฑํ•ด → ๊ทธ Index ์— ์ €์žฅ๋œ ๊ฐ’์„ ๊บผ๋‚ด์˜ค๋Š” ๊ตฌ์กฐ
  • ํ•ด์‹œ ํ…Œ์ด๋ธ” ๊ธฐ๋ฐ˜์˜ DB ์ธ๋ฑ์Šค๋Š” (๋ฐ์ดํ„ฐ = ์ปฌ๋Ÿผ์˜ ๊ฐ’, ๋ฐ์ดํ„ฐ ์œ„์น˜) ๋ฅผ **(Key, Value)**๋กœ ์‚ฌ์šฉ
    • ์ปฌ๋Ÿผ์˜ ๊ฐ’์œผ๋กœ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ๊ฑฐ์ณ ์ƒ์„ฑ๋œ ํ•ด์‹œ๋ฅผ ํ†ตํ•ด ์ธ๋ฑ์Šค ๊ตฌํ˜„ → ๋ฒ„ํ‚ท ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค
    • ๋‚ด๋ถ€์ ์œผ๋กœ **๋ฐฐ์—ด(๋ฒ„ํ‚ท)**์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ
    • buckets[Index] = ๋ฐ์ดํ„ฐ
  • ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ํ‰๊ท  ์‹œ๊ฐ„ ๋ณต์žก๋„ = O(1)

 

ํ•ด์‹œ ์ธ๋ฑ์Šค ์žฅ์ 

  • ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ์‹œ๊ฐ„๋ณต์žก๋„ = O(1)
  • → ๋งค์šฐ ๋น ๋ฅธ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ

 

ํ•ด์‹œ ์ธ๋ฑ์Šค ๋‹จ์ 

  • ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ํ•ด์‹œ ์ธ๋ฑ์Šค์—์„œ๋Š”, ์ถฉ๋Œ์ด ๋งŽ์ด ๋ฐœ์ƒํ• ์ˆ˜๋ก ๊ฒ€์ƒ‰ ํšจ์œจ ์ €ํ•˜
    • ์ถฉ๋Œ : ์ž…๋ ฅ ๊ฐ’์ด ๋‹ค๋ฅด์ง€๋งŒ, ๊ฒฐ๊ณผ ๊ฐ’์ด ๊ฐ™์€ ๊ฒฝ์šฐ, ์ฆ‰ ์ž…๋ ฅ ๊ฐ’์€ ๋‹ค๋ฅด์ง€๋งŒ ํ•ด์‹œ ๊ฐ’์ด ๊ฐ™์€ ๊ฒฝ์šฐ
    • ํ•ด์‹œ ํ•จ์ˆ˜ ๊ฒฐ๊ณผ ๊ฐ’์˜ ๋ฒ”์œ„๊ฐ€ ์ข์œผ๋ฉด → ํ•„์š”ํ•œ ๋ฒ„ํ‚ท ์ˆ˜๊ฐ€ ๊ฐ์†Œ → But, ์ถฉ๋Œ์ด ๋งŽ์ด ๋ฐœ์ƒ
    • ํ•ด์‹œ ํ•จ์ˆ˜ ๊ฒฐ๊ณผ ๊ฐ’์˜ ๋ฒ”์œ„๊ฐ€ ๋„“์œผ๋ฉด → ํ•„์š”ํ•œ ๋ฒ„ํ‚ท ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ → But, ์ถฉ๋Œ ๋ฐœ์ƒ ๊ฐ์†Œ
    • ๋ฐ์ดํ„ฐ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ, Chaining ์— ์—ฐ๊ฒฐ๋œ ๋ฆฌ์ŠคํŠธ๋“ค๊นŒ์ง€ ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•˜๋ฏ€๋กœ O(N) ๊นŒ์ง€ ์‹œ๊ฐ„๋ณต์žก๋„ ์ฆ๊ฐ€ ๊ฐ€๋Šฅ
    • ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ์ถฉ๋Œ์— ์˜ํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ - ๋ถ„๋ฆฌ ์—ฐ๊ฒฐ๋ฒ•(Separate Chaining) & ๊ฐœ๋ฐฉ ์ฃผ์†Œ๋ฒ•(Open Addressing)
      • ๋ถ„๋ฆฌ ์—ฐ๊ฒฐ๋ฒ• : ๋™์ผํ•œ ๋ฒ„ํ‚ท์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•ด “์ถ”๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ”๋ฅผ ์‚ฌ์šฉํ•ด → ๋‹ค์Œ ๋ฐ์ดํ„ฐ์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•  

 

๋ถ„๋ฆฌ ์—ฐ๊ฒฐ๋ฒ•

 

 

               

  • ๊ฐœ๋ฐฉ ์ฃผ์†Œ๋ฒ• : “๋น„์–ด์žˆ๋Š” ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ๊ณต๊ฐ„”์„ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
    • Linear Probing : ํ˜„์žฌ ๋ฒ„ํ‚ท index ๋กœ๋ถ€ํ„ฐ ๊ณ ์ •ํญ ๋งŒํผ์”ฉ ์ด๋™ํ•ด → ์ฐจ๋ก€๋Œ€๋กœ ๊ฒ€์ƒ‰ํ•ด ๋น„์–ด์žˆ๋Š” ๋ฒ„ํ‚ท์— ๋ฐ์ดํ„ฐ ์ €์žฅ
    • Quadratic Probing : ํ•ด์‹œ์˜ ์ €์žฅ์ˆœ์„œ ํญ์„ ์ œ๊ณฑ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹
      • Ex) ์ฒ˜์Œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ, 1๋งŒํผ ์ด๋™ → ๊ทธ ๋‹ค์Œ ์ถฉ๋Œ์ด๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ 2^2 → 2^3 ๋งŒํผ์”ฉ ์ด๋™
    • Double Hashing Probing : ํ•ด์‹œ๋œ ๊ฐ’์„ ํ•œ ๋ฒˆ ๋” ํ•ด์‹ฑํ•˜์—ฌ → ํ•ด์‹œ์˜ ๊ทœ์น™์„ฑ์„ ์—†์• ๋ฒ„๋ฆฌ๋Š” ๋ฐฉ์‹
      • ํ•ด์‹œ๋œ ๊ฐ’์„ ํ•œ ๋ฒˆ ๋” ํ•ด์‹ฑํ•ด ์ƒˆ๋กœ์šด ๊ฐ’์„ ํ• ๋‹น → ๋” ๋งŽ์€ ์—ฐ์‚ฐ ํ•„์š”

 

Double Hashing ์ „๋žต

 

  • Open Addressing ์—์„œ ๋ฐ์ดํ„ฐ ์‚ญ์ œ์‹œ → ์‚ญ์ œ๋œ ๊ณต๊ฐ„์€ Dummy Space๋กœ ํ™œ์šฉ
    • Hash Table์„ ์žฌ์ •๋ฆฌ ํ•˜๋Š” ์ž‘์—… ํ•„์š”

 

  • ํ•ด์‹œ๊ฐ€ ๋“ฑํ˜ธ(=) ์—ฐ์‚ฐ์—๋งŒ ํŠนํ™”๋˜์–ด ์žˆ์Œ
    • ํ•ด์‹œ ํ•จ์ˆ˜์˜ ๊ฐ’์ด 1์ด๋ผ๋„ ๋‹ฌ๋ผ์ง€๋ฉด → ๋‹ค๋ฅธ ํ•ด์‹œ ๊ฐ’์„ ์ƒ์„ฑ
    • ๋ถ€๋“ฑํ˜ธ ์—ฐ์‚ฐ(>, <) ์ด ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” DB ๊ฒ€์ƒ‰์—๋Š” ํ•ด์‹œ ํ…Œ์ด๋ธ”์ด ์ ํ•ฉํ•˜์ง€ ์•Š์Œ
    • Ex) “๋‚˜๋Š” ~” ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ์ฟผ๋ฆฌ๋ฌธ → ์ธ๋ฑ์Šค์˜ ํ˜œํƒ์„ ๋ฐ›์ง€ ๋ชปํ•จ

 

ํ•ด์‹œ ํ…Œ์ด๋ธ”(Hash Table) Vs ํ•ด์‹œ๋งต(HashMap)

  • ๋‘ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ฐจ์ด๋Š” “๋™๊ธฐํ™” ์ง€์› ์—ฌ๋ถ€”
  • ํ•ด์‹œ ํ…Œ์ด๋ธ” : ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋ฉด์„œ ์ž์›์˜ ๋™๊ธฐํ™”๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉ
    • ํ•ด์‹œํ…Œ์ด๋ธ”์˜ put ์—๋Š” synchronized ํ‚ค์›Œ๋“œ๊ฐ€ ๋ถ™์Œ
    • ๋ณ‘๋ ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋™๊ธฐํ™” ์ง€์›
    • ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ์ง€์—ฐ๋จ
  • ํ•ด์‹œ๋งต : ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜, ์ž์›์˜ ๋™๊ธฐํ™”๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š๋Š” ์ƒํ™ฉ์— ์‚ฌ์šฉ

 

๐ŸŒฒ B-Tree

 

B-Tree ๋ž€?

 

 

  • ์ด์ง„ํŠธ๋ฆฌ์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์ด์ง„ํŠธ๋ฆฌ์™€ ๋‹ฌ๋ฆฌ ์ž์‹ ๋…ธ๋“œ๊ฐ€ 2๊ฐœ ์ด์ƒ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ
    • ๊ฐ€์žฅ ์ƒ๋‹จ์˜ ๋…ธ๋“œ = ๋ฃจํŠธ ๋…ธ๋“œ(Root Node)
    • ์ค‘๊ฐ„ ๋…ธ๋“œ = ๋ธŒ๋žœํ‹ฐ ๋…ธ๋“œ(Branch Node)
    • ๊ฐ€์žฅ ์•„๋ž˜ ๋…ธ๋“œ = ๋ฆฌํ”„ ๋…ธ๋“œ(Leaf Node)
    • ์ˆ˜์ง์  ํƒ์ƒ‰๊ณผ ์ˆ˜ํ‰์  ํƒ์ƒ‰์œผ๋กœ ์ด๋ฃจ์–ด์ง
      • ์ˆ˜์ง์  ํƒ์ƒ‰ : ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐพ์•„๊ฐ
      • ์ˆ˜ํ‰์  ํƒ์ƒ‰ : ๋ฆฌํ”„ ๋…ธ๋“œ์—์„œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋…ธ๋“œ๋ฅผ ์ฐพ์•„๋‚˜๊ฐ

B-Tree

 

  • ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ์ฒ˜๋Ÿผ ๊ฐ Key ์˜ ์™ผ์ชฝ ์ž์‹์€ ํ•ญ์ƒ Key ๋ณด๋‹ค ์ž‘์€ ๊ฐ’์„ / ์˜ค๋ฅธ์ชฝ ์ž์‹์€ Key ๋ณด๋‹ค ํฐ ๊ฐ’์„ ๊ฐ€์ง
  • B-Tree ์˜ Key-Value ๊ฐ’์€ ํ•ญ์ƒ Key ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
    • ๋ถ€๋“ฑํ˜ธ ์—ฐ์‚ฐ์— ๋Œ€ํ•ด ํ•ด์‹œ ํ…Œ์ด๋ธ”๋ณด๋‹ค ํšจ์œจ์ ์ธ ํƒ์ƒ‰ ๊ฐ€๋Šฅ
  • ํ‰๊ท  ์‹œ๊ฐ„ ๋ณต์žก๋„ = O(logN)
  • Inno DB Storage Engine : ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ๋‹จ์œ„๋ฅผ ํŽ˜์ด์ง€๋กœ ๊ด€๋ฆฌ
    • ํŽ˜์ด์ง€ : ๋””์Šคํฌ์˜ ์ฝ๊ธฐ, ์“ฐ๊ธฐ ์ตœ์†Œ ๋‹จ์œ„
    • ์ธ๋ฑ์Šค๋„ ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ๊ด€๋ฆฌ
  • Range Scan
    • Leaf ๋ธ”๋ก์—์„œ ์Šค์บ” ์‹œ์ž‘์ ์„ ์ฐพ์•„ → ์Šค์บ”์„ ํ•˜๋‹ค๊ฐ€, ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ๊ฒฝ์šฐ Scan ์„ ์ข…๋ฃŒ
    • Full Scan์— ๋น„ํ•ด ํšจ์œจ์ ์ž„

 

B-Tree ํŠน์ง•

  • ๊ท ํ˜•ํŠธ๋ฆฌ
    • “๊ท ํ˜•ํŠธ๋ฆฌ"๋ž€, ๋ฃจํŠธ๋กœ๋ถ€ํ„ฐ ๋ฆฌํ”„ ๋„๋“œ๊นŒ์ง€ ๊ฑฐ๋ฆญ ใ…์ผ์ •ํ•œ ํŠธ๋ฆฌ ๊ตฌ์กฐ
    • ํŠธ๋ฆฌ ์ค‘์—์„œ ์„ฑ๋Šฅ์ด ์•ˆ์ •ํ™” ๋˜์–ด์žˆ์Œ
  • B-Tree ์ฒ˜์Œ ์ƒ์„ฑ ๋‹น์‹œ - ๊ท ํ˜• ํŠธ๋ฆฌ์ด์ง€๋งŒ,
  • ํ…Œ์ด๋ธ” ๊ฐฑ์‹ (INSERT/UPDATE/DELETE)์˜ ๋ฐ˜๋ณต์„ ํ†ตํ•ด ์„œ์„œํžˆ ๊ท ํ˜•์ด ๊นจ์ง€๊ณ  ์„ฑ๋Šฅ์ด ์•…ํ™”๋  ์ˆ˜ ์žˆ๋‹ค.

→ ์–ด๋Š ์ •๋„ ์ž๋™์œผ๋กœ ๊ท ํ˜•์„ ํšŒ๋ณตํ•˜๋Š” ๊ธฐ๋Šฅ๋„ ์žˆ์ง€๋งŒ,

→ ๊ฐฑ์‹  ๋นˆ๋„๊ฐ€ ๋†’์€ ํ…Œ์ด๋ธ”์— ์ž‘์„ฑ๋˜๋Š” ์ธ๋ฑ์Šค๋Š” - ์ธ๋ฑ์Šค ์žฌ๊ตฌ์„ฑ์„ ํ†ตํ•ด ํŠธ๋ฆฌ์˜ ๊ท ํ˜• ํšŒ๋ณต ํ•„์š”

 

Key ๊ฒ€์ƒ‰ ๊ณผ์ •

  • ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ์˜ ์„ฑ์งˆ์„ ์ด์šฉํ•ด ํ•˜ํ–ฅ์‹์œผ๋กœ ๊ฒ€์ƒ‰ ์ˆ˜ํ–‰
    • ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ : ๊ฐ Key ๋“ค์˜ ์™ผ์ชฝ ์ž์‹์€ ํ•ญ์ƒ Key ๋ณด๋‹ค ์ž‘์€ ๊ฐ’์„, ์˜ค๋ฅธ์ชฝ์€ ํฐ ๊ฐ’์„ ๊ฐ€์ง

 

B-Tree ์—์„œ Key ๊ฒ€์ƒ‰ ๊ณผ์ •

 

B-Tree Key ๊ฒ€์ƒ‰ ๊ณผ์ •

 

B-Tree ์ธ๋ฑ์Šค ์žฅ์ 

  • ๊ท ์ผ์„ฑ
    • ์–ด๋–ค ๊ฐ’์— ๋Œ€ํ•ด์„œ๋„ ๊ฐ™์€ ์‹œ๊ฐ„(=O(logN))์— ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค
  • ๋ฐ์ดํ„ฐ ์–‘์— ๋น„๋ž˜ํ•ด ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ ์†๋„ ์ƒ์Šน
    • ํ’€ ์Šค์บ” : ํ…Œ์ด๋ธ” ํฌ๊ธฐ์— ๋น„๋ก€ํ•˜๋Š” ํ˜•ํƒœ๋กœ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ ์ฆ๊ฐ€
    • ์ธ๋ฑ์Šค : ์‹คํ–‰ ์‹œ๊ฐ„ ์ €ํ•˜๋Š” ๋ณดํ†ต ์›๋งŒํ•œ ๊ณก์„ ์„ ์ด๋ฃธ

 

 

B-Tree ์ธ๋ฑ์Šค ๋‹จ์ 

  • Index ๊ฐ€ ์ ์šฉ๋œ ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ ๊ฐฑ์‹ (INSERT/UPDATE/DELETE) ์ด ๋ฐ˜๋ณต → ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์ด ๊นจ์ง€๋ฉฐ ์„ฑ๋Šฅ ์•…ํ™”
  • DB Index ์ปฌ๋Ÿผ์€ ๋ถ€๋“ฑํ˜ธ๋ฅผ ์ด์šฉํ•œ ‘์ˆœ์ฐจ ๊ฒ€์ƒ‰ ์—ฐ์‚ฐ' ์ด ์ž์ฃผ ๋ฐœ์ƒ
    • B-Tree ๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ๋˜์–ด ์žˆ์–ด → ํ•ด์‹œ ํ…Œ์ด๋ธ” ๋ณด๋‹ค ๋ถ€๋“ฑํ˜ธ๋ฅผ ์ด์šฉํ•œ ๊ฒ€์ƒ‰ ์—ฐ์‚ฐ ์„ฑ๋Šฅ์ด ์ข‹์ง€๋งŒ,
    • ์ˆœ์ฐจ ๊ฒ€์ƒ‰์˜ ๊ฒฝ์šฐ “์ค‘์œ„ ์ˆœํšŒ" ๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํšจ์œจ์ด ์ข‹์ง€ ์•Š์Œ

    • ์œ„์˜ ์˜ˆ์‹œ์—์„œ ๋…ธ๋“œ 6์„ ์ฐพ๊ธฐ ์œ„ํ•ด
      • 7 > 3 > 8 > 1 > 9 > 4 > 10 > 0 > 11 > 5 > 2 > 6 ์ˆœ์„œ๋กœ ์กฐํšŒํ•ด์•ผ ํ•จ

 

๐ŸŒณ B+Tree

 

B+Tree ๋ž€?

 

B+Tree

 

  • **B+Tree ๋ž€, Leaf Node ๋งŒ (์ธ๋ฑ์Šค + ๋ฐ์ดํ„ฐ)**๋ฅผ ํ•จ๊ป˜ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ ,
  • ๋‚˜๋จธ์ง€ ๋…ธ๋“œ(Inner Node) ๋“ค์€ ๋ฐ์ดํ„ฐ๋ฅผ ์œ„ํ•œ ์ธ๋ฑ์Šค(Key) ๋งŒ์„ ๊ฐ–๋Š”๋‹ค.
    • B-Tree ์˜ ๊ฒฝ์šฐ, Internal(Inner, Brandch) Node ์— Key ์™€ Data ๋ฅผ ๋ชจ๋‘ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฆฌํ”„ ๋…ธ๋“œ๋ผ๋ฆฌ๋Š” Linked List ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค.
    • ์ฆ‰, ๋ฆฌํ”„ ๋…ธ๋“œ๋ผ๋ฆฌ๋Š” Linked List ๋กœ ์„œ๋กœ๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์–ด,
    • ๋ถ€๋“ฑํ˜ธ๋ฅผ ์ด์šฉํ•œ ์ˆœ์ฐจ ๊ฒ€์ƒ‰ ์—ฐ์‚ฐ ์‹œ ์ค‘์œ„ ์ˆœํšŒ๋ฅผ ํ†ตํ•ด ๋งŽ์€ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•ด์•ผ ํ•˜๋Š” B-Tree ์— ๋น„ํ•ด B+Tree ๋Š” ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ ์ €์žฅํ•œ Linked List ๋ฅผ ํ•œ ๋ฒˆ๋งŒ ํƒ์ƒ‰ํ•˜๋ฉด ๋œ๋‹ค.

 

B+Tree ์ธ๋ฑ์Šค ์žฅ์ 

  • ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„๋‘์ง€ ์•Š์Œ๋” ๋งŽ์€ Key ์ˆ˜์šฉ ๊ฐ€๋Šฅ→ Cache Hit ํ–ฅ์ƒ ๊ฐ€๋Šฅ
  • → ํ•˜๋‚˜์˜ ๋…ธ๋“œ์— ๋” ๋งŽ์€ Key ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ์–ด, ํŠธ๋ฆฌ์˜ ๋†’์ด๋ฅผ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ์Œ
  • ๋ฉ”๋ชจ๋ฆฌ ํ™•๋ณด ๊ฐ€๋Šฅ
  • Full Scan ์‹œ ๋ฆฌํ”„ ๋…ธ๋“œ์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ์žˆ์–ด → ํ•œ ๋ฒˆ์˜ ์„ ํ˜• ํƒ์ƒ‰๋งŒ ํ•˜๋ฉด ๋˜๋ฏ€๋กœ, B-Tree ์— ๋น„ํ•ด ๋น ๋ฆ„
    • B-Tree ์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•จ

 

B+Tree ์ธ๋ฑ์Šค ๋‹จ์ 

  • B-Tree ์˜ ๊ฒฝ์šฐ Best Case ์— ๋Œ€ํ•ด์„œ๋Š” ๋ฆฌํ”„๋…ธ๋“œ๊นŒ์ง€ ๊ฐ€์ง€ ์•Š์•„๋„ ๊ฒ€์ƒ‰(์กฐํšŒ)๊ฐ€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, B+Tree ์˜ ๊ฒฝ์šฐ ๋ฆฌํ”„ ๋…ธ๋“œ๊นŒ์ง€ ๊ฐ€์•ผ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค

 

B-Tree Vs B+Tree ์ธ๋ฑ์Šค

 

๐Ÿšฆ์ธ๋ฑ์Šค ์ข…๋ฅ˜

  • ์ธ๋ฑ์Šค๋Š” ํฌ๊ฒŒ Clustered ์™€ NonClustered ์ธ๋ฑ์Šค๋กœ ๋‚˜๋‰จ

 

Clustered Index

  • Clustered Index ๋Š” ๋ฌผ๋ฆฌ์  ์ •๋ ฌ๋กœ DB์— ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ ์‹œ Clustered ์ธ๋ฑ์Šค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ž…๋ ฅ์ด ๋œ๋‹ค.
  • ํ•œ ํ…Œ์ด๋ธ”์— ์˜ค์ง ํ•˜๋‚˜๋งŒ ์กด์žฌ ๊ฐ€๋Šฅ
  • → ํ…Œ์ด๋ธ” ๋‚ด์—์„œ ORDER BY ๋ฅผ ํ•˜์ง€ ์•Š์•„๋„, ๋ฐ์ดํ„ฐ๊ฐ€ Clustered ์ธ๋ฑ์Šค์— ๋”ฐ๋ผ ์ •๋ ฌ์ด ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ์–ด → ๊ฐ€์žฅ ๋น ๋ฅธ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
    • Auto Increment

 

NonClustered Index

  • NonClustered Index ๋Š” Clustered Index ์™€๋Š” ๋‹ฌ๋ฆฌ, ์ค‘๋ณต๋œ ๊ฐ’์„ ๊ฐ€์ง€๋ฉด → ํ•œ ํ…Œ์ด๋ธ”์— ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ž๋™ ์ •๋ ฌ๋˜์ง€ ์•Š๊ณ , Index ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋Š” Clustered ๊ฐ€ ๋˜์–ด์žˆ์„ ๋•Œ Index Scan ์ด ์œ ๋ฆฌํ•˜๋‹ค.
  • ์•ฝํ•œ ์ฐธ์กฐ ๊ด€๊ณ„ → ๊ตณ์ด ์ •๋ ฌ์„ ํ•˜์ง€ ์•Š์•„๋„ ๋จ

 

๐Ÿ•– ์ธ๋ฑ์Šค๋ฅผ ์–ธ์ œ ์‚ฌ์šฉํ• ๊นŒ?

  • SELECT / INSERT / UPDATE / DELETE ์ค‘ SELECT ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ๋Š” ํšจ๊ณผ์ ์ด์ง€๋งŒ, ๋‹ค๋ฅธ DML์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์„ฑ๋Šฅ ์ €ํ•˜ ๋ฐœ์ƒ
    • INSERT ๋Š” ์™œ ์„ฑ๋Šฅ์„ ์ €ํ•˜์‹œํ‚ค๋Š”๊ฐ€?
      • INSERT ๋Š” ์ •๋ ฌ์ด ๋œ ์ƒํƒœ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ์ด ๋˜์–ด์•ผ ํ•˜๊ธฐ ๋–„๋ฌธ
      • ์–ด๋Š ์ž๋ฆฌ์— INSERT ๋ฅผ ํ•ด์•ผํ•˜๋Š”์ง€๋ฅผ ์ฐพ์•„ → ์ €์žฅํ•˜๊ณ  → ์›๋ž˜ ์œ„์น˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋’ค๋กœ ๋ฐ€์–ด์ฃผ์–ด์•ผ ํ•จ
      • ๋งŒ์•ฝ, ์ €์žฅํ•  ํŽ˜์ด์ง€, ๋ธ”๋ก์ด ๊ฝ‰ ์ฐจ๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ํŽ˜์ด์ง€๋กœ ์˜ฎ๊ฒจ์•ผ ํ•˜๋ฉฐ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…์ด ๋” ๋งŽ์•„์ง€๊ฒŒ ๋จ
      • ์ธ๋ฑ์Šค๋Š” ํ…Œ์ด๋ธ”๊ณผ ๋ณ„๋„์˜ ๊ฐ์ฒด์ด๋ฏ€๋กœ, ํ…Œ์ด๋ธ”์—๋„ ์‚ฝ์ž…์„ ํ•ด์ฃผ์–ด์•ผ ํ•จ
    • DELETE ๋Š” ์™œ ์„ฑ๋Šฅ์„ ์ €ํ•˜์‹œํ‚ค๋Š”๊ฐ€?
      • DELETE ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ๋กœ ์ง€์šฐ๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ์ธ๋ฑ์Šค ๋‚ด์— ‘์‚ฌ์šฉ ์•ˆ ํ•จ’ ํ‘œ์‹œ ์ฒ˜๋ฆฌ
      • ๊ณต๊ฐ„ ๋‚ญ๋น„ ์กด์žฌ
    • UPDATE ๋Š” ์™œ ์„ฑ๋Šฅ์„ ์ €ํ•˜์‹œํ‚ค๋Š”๊ฐ€?
      • ์ธ๋ฑ์Šค์—๋Š” UPDATE ๊ฐœ๋…์ด ์—†์Œ
      • UPDATE ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ, DELETE ์ˆ˜ํ–‰ ํ›„ → INSERT ์ฒ˜๋ฆฌ
      • ์ž‘์—… ๋ถ€ํ•˜ ์กด์žฌ
  • SELECT FROM WHERE ๊ณผ ๊ฐ™์ด ์กฐ๊ฑด์ ˆ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ 
  • ํŠน์ • ์—ด์„ ๊ณ ๋ ค ๋Œ€์ƒ์—์„œ ๋นจ๋ฆฌ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด
  • **์กฐ์ธ(JOIN)**์„ ์‹คํ–‰ํ•  ๋•Œ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์—์„œ ์—ด์„ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•ด
  • ํŠน์ •ํ•˜๊ฒŒ ์ธ๋ฑ์Šค๋œ ์ปฌ๋Ÿผ์„ ์œ„ํ•œ MIN(), MAX() ๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•ด
  • ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ‚ค์˜ ์ตœ ์ขŒ์ธก ์ ‘๋‘์‚ฌ(leftmost prefix)๋ฅผ ํ†ตํ•ด ์ •๋ ฌ ๋ฐ ๊ทธ๋ฃนํ™”๋ฅผ ์œ„ํ•ด
  • ๋ฐ์ดํ„ฐ ์—ด์„ ์ฐธ์กฐํ•˜์ง€ ์•Š๋Š” ์ƒํƒœ๋กœ, ๊ฐ’์„ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•ด ์ฟผ๋ฆฌ๋ฅผ ์ตœ์ ํ™” ํ•˜๋Š” ๊ฒฝ์šฐ

 

๐Ÿ” ์ธ๋ฑ์Šค Column ์„ค์ • ๊ธฐ์ค€

  • Cardinality(๊ธฐ์ˆ˜์„ฑ)๊ฐ€ ๋†’์€ ๊ฒƒ
    • ๊ณ ์œ ํ•œ ๊ฐ’์˜ ์ˆ˜๊ฐ€ ๋งŽ๋‹ค๋Š” ๊ฒƒ
    • ์•„๋ž˜ ์˜ˆ์‹œ์—์„œ, ์ฃผ๋ฏผ๋ฒˆํ˜ธ์˜ ์นด๋””๋„๋ฆฌํ‹ฐ > ์„ฑ๋ณ„ ์นด๋””๋„๋ฆฌํ‹ฐ
    • ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋†’์€ ์ปฌ๋Ÿผ์˜ ๊ฒฝ์šฐ, Index ๋ฅผ ํ†ตํ•ด ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•„ํ„ฐ๋ง ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ

 

 

์นด๋””๋„๋ฆฌํ‹ฐ

 

์นด๋””๋„๋ฆฌํ‹ฐ ๊ฐœ๋…

  • **์ „์ฒด ํ–‰์— ๋Œ€ํ•œ ํŠน์ • ์ปฌ๋Ÿผ์˜ ์ค‘๋ณต ์ˆ˜์น˜**๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ง€ํ‘œ
  • ์ค‘๋ณต๋„๊ฐ€ ‘๋‚ฎ์œผ๋ฉด' → ์นด๋””๋„๋ฆฌ๊ฐ€ ‘๋†’๋‹ค’
  • ์ค‘๋ณต๋„๊ฐ€ ‘๋†’์œผ๋ฉด' → ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ **‘๋‚ฎ๋‹ค’**

 

์…€ ์ˆ˜ ์žˆ๋Š” ์นด๋””๋„๋ฆฌํ‹ฐ์™€ ์…€ ์ˆ˜ ์—†๋Š” ์นด๋””๋„๋ฆฌํ‹ฐ

  • ์…€ ์ˆ˜ ์žˆ๋Š” ์นด๋””๋„๋ฆฌํ‹ฐ
    • ์„ฑ๋ณ„ : ๋‚จ/์—ฌ → ์นด๋””๋„๋ฆฌํ‹ฐ = 2
    • ์š”์ผ : ์›” ~ ์ผ → ์นด๋””๋„๋ฆฌํ‹ฐ = 7
  • ์…€ ์ˆ˜ ์—†๋Š” ์นด๋””๋„๋ฆฌํ‹ฐ
    • ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ : ์œ ๋‹ˆํฌํ•œ ๊ฐ’ → ํ˜„์žฌ ํ–‰์„ count ํ•œ ๊ฐ’

 

์ƒ๋Œ€์ ์ธ ๊ฐœ๋…์˜ ์นด๋””๋„๋ฆฌํ‹ฐ

  • ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋†’๋‹ค/๋‚ฎ๋‹ค๋Š” ๋น„๊ต ๋Œ€์ƒ์ด ์กด์žฌํ•˜๊ณ , ๊ทธ ๋Œ€์ƒ์— ๋น„ํ•ด ๋†’๋‹ค/๋‚ฎ๋‹ค๋ผ๊ณ  ํ‘œํ˜„ํ•˜๋ฏ€๋กœ ์ƒ๋Œ€์ ์ธ ๊ฒƒ
    • Ex) ์š”์ผ์˜ ์นด๋””๋„๋ฆฌํ‹ฐ = 7→ ์š”์ผ > ์„ฑ๋ณ„, ์š”์ผ < ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ
    • ์„ฑ๋ณ„์˜ ์นด๋””๋„๋ฆฌํ‹ฐ = 2
  • Distinct ํ•œ ๊ฐ’์ด ๋†’์œผ๋ฉด ์ค‘๋ณต๋„๊ฐ€ ๋‚ฎ๋‹ค / ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋†’๋‹ค

 

๋ฉ€ํ‹ฐ ์ธ๋ฑ์‹ฑ ์ „๋žต

  • ์ธ๋ฑ์Šค๋ฅผ ๊ฑธ ๋•Œ์—๋Š”, ์ตœ๋Œ€ํ•œ ๋งŽ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฑธ๋Ÿฌ์ ธ์•ผ full scan ์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ๋†’์€ ์ปฌ๋Ÿผ์„ ์šฐ์„ ์ˆœ์œ„์— ๋‘๋Š” ๊ฒƒ์ด ์ธ๋ฑ์‹ฑ ์ „๋žต์— ์œ ๋ฆฌ
    • Ex) ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ → ์„ฑ๋ณ„ ์ˆœ์œผ๋กœ ์ธ๋ฑ์‹ฑ

 

์ธ๋ฑ์Šค ์žฅ์ 

  • ํ‚ค ๊ฐ’์„ ํ†ตํ•ด ํ…Œ์ด๋ธ”์—์„œ ๊ฒ€์ƒ‰ ๋ฐ ์ •๋ ฌ ์†๋„ ํ–ฅ์ƒ
  • ๊ทธ๋ฃนํ™” ์ž‘์—… ์†๋„ ํ–ฅ์ƒ
  • ์ธ๋ฑ์Šค ์‚ฌ์šฉ ์‹œ ํ…Œ์ด๋ธ” ํ–‰์˜ ๊ณ ์œ ์„ฑ ๊ฐ•ํ™” ๊ฐ€๋Šฅ
  • ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค = ์ž๋™์œผ๋กœ ์ธ๋ฑ์Šค๊ฐ€ ๋จ

 

์ธ๋ฑ์Šค ๋‹จ์ 

  • Index ์ƒ์„ฑ ์‹œ .mdb ํŒŒ์ผ์˜ ํฌ๊ธฐ๊ฐ€ ์ฆ๊ฐ€
  • ํ•œ ํŽ˜์ด์ง€๋ฅผ ๋™์‹œ์— ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ‘ํ–‰์„ฑ ์ €ํ•˜
  • Index ๋œ ํ•„๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜๊ฑฐ๋‚˜, ๋ ˆ์ฝ”๋“œ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ ์‹œ ์„ฑ๋Šฅ์ €ํ•˜
  • ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์ž‘์—…์ด ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ, Index๋ฅผ ์žฌ์ž‘์„ฑํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์นจ
  • Index ์ƒ์„ฑ ์‹œ ์‹œ๊ฐ„ ์†Œ์š”
  • Index ๊ฐ€ DB ๊ณต๊ฐ„์„ ์ฐจ์ง€ → ์ถ”๊ฐ€์ ์ธ ๊ณต๊ฐ„(DB์˜ 10% ๋‚ด์™ธ ์ถ”๊ฐ€ ๊ณต๊ฐ„)ํ•„์š”

 

์ฐธ๊ณ ์ž๋ฃŒ

        •  

'CS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Network] HTTP ๋ž€ ?  (0) 2022.07.09
[Network] TCP ์™€ UDP ์˜ ์ฐจ์ด ?  (0) 2022.07.09
[Network] TCP/IP ๋ž€ ?  (0) 2022.07.09
[Network] OSI 7๊ณ„์ธต(feat.TCP/IP Updated)  (0) 2022.06.21
[OS] Process / Thread  (0) 2022.01.12