Skip to content

Latest commit

ย 

History

History
115 lines (69 loc) ยท 4.98 KB

index.md

File metadata and controls

115 lines (69 loc) ยท 4.98 KB

Index(์ธ๋ฑ์Šค)

= ์ฑ…์˜ ์ƒ‰์ธ -> ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ

  • ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์—์„œ๋„ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ์€ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ํฌํ•จํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑ(์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑ)ํ•˜์—ฌ ํšจ์œจ์ ์ธ ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅ
  • ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์กฐํšŒ๊ฐ€ ํ•„์š”ํ•œ ๋ช…๋ น์–ด(SELECT, UPDATE, DELETE ๋“ฑ)์˜ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ

Index์˜ ๊ด€๋ฆฌ

  • DBMS๋Š” ํ•ญ์ƒ index๋ฅผ ์ตœ์‹ ์˜ ์ƒํƒœ๋กœ ์œ ์ง€ํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์ธ๋ฑ์Šค๊ฐ€ ์ ์šฉ๋œ ๊ฐ ์—ฐ์‚ฐ(INSERT, UPDATE, DELETE ๋“ฑ)์ด ์ˆ˜ํ–‰๋˜๋ฉด ๊ทธ์— ๋”ฐ๋ผ ์ถ”๊ฐ€์ ์ธ ์ž‘์—…์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฒ„ํ—ค๋“œ(overhead)๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

์žฅ์ 

  • ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค.
  • ์ „๋ฐ˜์ ์ธ ์‹œ์Šคํ…œ์˜ ๋ถ€ํ•˜๋ฅผ ๊ฐ์†Œ์‹œํ‚จ๋‹ค.
  • ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ํ…Œ์ด๋ธ”์„ ์กฐํšŒํ•˜๋Š” ์‹œ๊ฐ„์„ ๋‹จ์ถ•์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

ex

  1. WHERE์ ˆ์„ ํ†ตํ•œ ์กฐ๊ฑด ๊ฒ€์ƒ‰ ์ˆœ์„œ ์—†๋Š” ํ…Œ์ด๋ธ”์„ WHERE์ ˆ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” *Full Table Scan์ด ํ•„์š”ํ•˜๋‹ค. ํ–์ง€๋งŒ Index Table์‹œ์—๋Š” ์ธ๋ฑ์Šค๋“ค์ด ์ด๋ฏธ ์ •๋ ฌ๋˜์–ด ์ €์žฅ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋“ค์˜ ๋น ๋ฅธ ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  2. *ORDER BY์ ˆ์„ ํ†ตํ•œ ์ •๋ ฌ ORDER BY๋Š” ๊ฐ€์žฅ ๋ถ€ํ•˜๊ฐ€ ๋งŽ์ด ๊ฑธ๋ฆฌ๋Š” ์—ฐ์‚ฐ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฏธ ์ •๋ ฌ์ด ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ORDER BY์—ฐ์‚ฐ ์ž‘์—… ์ž์ฒด๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. Min, Max์˜ ํšจ์œจ์ ์ธ ์ฒ˜๋ฆฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์žฅ ์ฒ˜์Œ ๊ฐ’๊ณผ ๊ฐ€์žฅ ๋์˜ ๊ฐ’๋งŒ ๊ฐ€์ ธ์˜ค๋ฉด ํšจ์œจ์ ์ธ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
Full Table Scan - ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ, Full Scan์ด๋ผ๊ณ ๋„ ํ•จ
ORDER BY - ๋‚ด๋ฆผ์ฐจ์ˆœ ํ˜น์€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ๋“ค์ด ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์—ฐ์‚ฐ

๋‹จ์ 

  • ์ธ๋ฑ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด DB์— ์ถ”๊ฐ€์ ์ธ ์ €์žฅ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค.
  • ์ธ๋ฑ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€์ ์ธ ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค.

INSERT, UPDATE, DELETE์™€ ๊ฐ™์€ ์—ฐ์‚ฐ์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆ˜์ •,์‚ญ์ œ, ์‚ฝ์ž…๋˜์—ˆ์„ ๋•Œ ์ •๋ ฌ์„ ๋‹ค์‹œ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

  • ์ธ๋ฑ์Šค๋ฅผ ์ž˜๋ชป ์‚ฌ์šฉ ํ•  ๊ฒฝ์šฐ ์„ฑ๋Šฅ ์ €ํ•˜์˜ ์—ญํšจ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

UPDATE, DELETE์™€ ๊ฐ™์€ ๋ช…๋ น์–ด์˜ ๊ฒฝ์šฐ ๊ธฐ์กด์˜ ์กด์žฌํ•˜๋Š” ์ธ๋ฑ์Šค๋ฅผ ์‚ญ์ œํ•˜๋Š”๊ฒŒ ์•„๋‹Œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, DELETE์™€ ๊ฐ™์€ ์—ฐ์‚ฐ์ด ์ˆ˜์‹œ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ์— ์ธ๋ฑ์Šค๊ฐ€ ์—„์ฒญ๋‚˜๊ฒŒ ๋ถˆ์–ด๋‚˜ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋‹ค.

  • ํ…Œ์ด๋ธ”์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์ธ๋ฑ์Šค ์Šค์บ” ์‚ฌ์šฉ ์—ฌ๋ถ€๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค.

๋งŒ์•ฝ ํ…Œ์ด๋ธ”์ด ๋งค์šฐ ์ž‘์€ ๊ฒฝ์šฐ ๊ตณ์ด ์ธ๋ฑ์Šค ์Šค์บ”์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ FULL SCAN์ด ๋” ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค ์Šค์บ”์„ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.


์ธ๋ฑ์Šค๋Š” ์–ธ์ œ ์ƒ์„ฑํ• ๊นŒ?

  • ์กฐ๊ฑด์ ˆ(WHERE)์ด ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ปฌ๋Ÿผ
  • ==์œผ๋กœ ๋น„๊ต๋˜๋Š” ์ปฌ๋Ÿผ
  • ์ค‘๋ณต๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ตœ์†Œํ•œ์ผ ๋•Œ
  • ORDER BY์ ˆ์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ปฌ๋Ÿผ
  • JOIN์กฐ๊ฑด์œผ๋กœ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ปฌ๋Ÿผ

์ธ๋ฑ์Šค์˜ ๊ตฌ์กฐ

Hash Table

ํ•ด์‹œ ํ…Œ์ด๋ธ”์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰์ด ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ํ•ด์‹œ ํ…Œ์ด๋ธ”์— ๋ถ™์€ key๊ฐ’์„ ์ด์šฉํ•ด ๊ณ ์œ ํ•œ index๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ทธ index ์ €์žฅ๋œ ๊ฐ’์„ ๊บผ๋‚ด์˜ค๋Š” ๋ฐฉ์‹

ํ•ด์‹œ ํ…Œ์ด๋ธ” ๊ธฐ๋ฐ˜์˜ db์ธ๋ฑ์Šค

key, value = ์ปฌ๋Ÿผ์˜ ๊ฐ’, ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜

-> ์ปฌ๋Ÿผ์˜ ๊ฐ’์œผ๋กœ ์ƒ์„ฑ๋œ ํ•ด์‹œ, ๋”ฐ๋ผ์„œ ์‹œ๊ฐ„๋ณต์žก๋„ = O(1)

๊ทธ๋Ÿฌ๋‚˜ Hash Table์€ ์‚ฌ์šฉ์ด ์ œํ•œ์ 

-> ํ•ด์‹œ๋Š” ๋“ฑํ˜ธ(==) ์—ฐ์‚ฐ๋งŒ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ, ์ด๋•Œ๋ฌธ์— ๋ถ€๋“ฑํ˜ธ ์—ฐ์‚ฐ์ด ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰์—๋Š” ํ•ด์‹œ ํ…Œ์ด๋ธ” ์‚ฌ์šฉ x


B - Tree

B-Tree๋ž€ ์ž์‹ ๋…ธ๋“œ๊ฐ€ 2๊ฐœ ์ด์ƒ์ธ ํŠธ๋ฆฌ.
์ด์ง„๊ฒ€์ƒ‰ ํŠธ๋ฆฌ์ฒ˜๋Ÿผ ๊ฐ Key์˜ ์™ผ์ชฝ ์ž์‹์€ ํ•ญ์ƒ Key๋ณด๋‹ค ์ž‘์€ ๊ฐ’์„, ์˜ค๋ฅธ์ชฝ ์ž์‹์€ ํฐ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค.

  • ๋…ธ๋“œ ํ•˜๋‚˜์— ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ์ €์žฅ
  • ๊ฐ ๋…ธ๋“œ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋Š” ํ•ญ์ƒ ์ •๋ ฌ๋œ ์ƒํƒœ, ๋…ธ๋“œ์— ์ €์žฅ๋œ ๋ฒ”์œ„๋ฅผ ์‚ฌ์šฉํ•ด ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง (n+1)
  • ๊ฐ ๋…ธ๋“œ์—๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ key๋ฅผ ๊ฐ€์ง€๊ณ  ๊ฐ key์— ๋Œ€์‘ํ•˜๋Š” data๋„ ํ•จ๊ป˜ ๊ฐ€์ง
  • ํ•ญ์ƒ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ๋ถ€๋“ฑํ˜ธ ์—ฐ์‚ฐ์— ๋ฌธ์ œ x
  • pointer ์ ‘๊ทผ์ด ์•„๋‹Œ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ๋””์Šคํฌ์—์„œ ๋‹ค์Œ ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผ
  • ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœํšŒํ•˜๋Š” ๊ฒฝ์šฐ์— ๋น„ํšจ์œจ์  -> ์ด๋ฅผ ๊ฐœ์„ ํ•œ ๊ฒƒ์ด B + tree

์‹œ๊ฐ„ ๋ณต์žก๋„ = O(logn)


B + Tree

DB์˜ ์ธ๋ฑ์Šค๋ฅผ ์œ„ํ•ด ์ž์‹๋…ธ๋“œ๊ฐ€ 2๊ฐœ ์ด์ƒ์ธ b-tree๋ฅผ ๊ฐœ์„ ์‹œํ‚จ ์ž๋ฃŒ๊ตฌ์กฐ

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

์‹œ๊ฐ„๋ณต์žก๋„ = O(log2๐‘›(2์˜ n))