Index

์นผ๋Ÿผ์˜ ๊ฐ’๊ณผ ํ•ด๋‹น ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋œ ์ฃผ์†Œ๋ฅผ ํ‚ค์™€ ๊ฐ’์˜ ์Œ์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค์–ด๋‘”๋‹ค.

 

* DBMS์˜ ์ธ๋ฑ์Šค๋Š” ํ•ญ์ƒ ์ •๋ ฌ๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์—

์›ํ•˜๋Š” ๊ฐ’์„ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ์€ ๋น ๋ฅด์ง€๋งŒ ์ƒˆ๋กœ์šด ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œ, ์ˆ˜์ •ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” query๋ฌธ ์‹คํ–‰ ์†๋„๊ฐ€ ๋Š๋ ค์ง„๋‹ค.

DBMS์—์„œ ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ ์„ฑ๋Šฅ์„ ํฌ์ƒํ•˜๋Š” ๋Œ€์‹  ๋ฐ์ดํ„ฐ์˜ ์ฝ๊ธฐ ์†๋„๋ฅผ ๋†’์ด๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

 

 

 

Index ์ž๋ฃŒ๊ตฌ์กฐ - DBMS์˜ ์ธ๋ฑ์Šค ๊ด€๋ฆฌ

B+- Tree Index ์•Œ๊ณ ๋ฆฌ์ฆ˜
์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.
B +- ์ธ๋ฑ์Šค๋Š” ์นผ๋Ÿผ์˜ ๊ฐ’์„ ๋ณ€ํ˜•ํ•˜์ง€ ์•Š๊ณ (์‚ฌ์‹ค์€๊ฐ’์˜ ์•ž๋ถ€๋ถ„๋งŒ ์ž˜๋ผ์„œ ๊ด€๋ฆฌํ•œ๋‹ค๊ณ  ํ•œ๋‹ค),
์›๋ž˜์˜ ๊ฐ’์„ ์ด์šฉํ•ด ์ธ๋ฑ์‹ฑํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

 

Hash ์ธ๋ฑ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜

์นผ๋Ÿผ์˜ ๊ฐ’์œผ๋กœ ํ•ด์‹œ ๊ฐ’์„ ๊ณ„์‚ฐํ•ด์„œ ์ธ๋ฑ์‹ฑํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋งค์šฐ ๋น ๋ฅธ ๊ฒ€์ƒ‰์„ ์ง€์›ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ๊ฐ’์„ ๋ณ€ํ˜•ํ•ด์„œ ์ธ๋ฑ์‹ฑํ•˜๋ฏ€๋กœ, ํŠน์ • ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฐ’์œผ๋กœ ๊ฒ€์ƒ‰์„ ํ•˜๋Š” ์ „๋ฐฉ ์ผ์น˜์™€ ๊ฐ™์ด ๊ฐ’์˜ ์ผ๋ถ€๋งŒ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๊ณ ์ž ํ•  ๋•Œ๋Š” ํ•ด์‹œ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

์ฃผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

 

์™œ index ๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ b-tree ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?
๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š” ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(1)์ธ hash table ์ด ๋” ํšจ์œจ์ ์ผ ๊ฒƒ ๊ฐ™์€๋ฐ?
SELECT ์งˆ์˜์˜ ์กฐ๊ฑด์—๋Š” ๋ถ€๋“ฑํ˜ธ(<>) ์—ฐ์‚ฐ๋„ ํฌํ•จ์ด ๋œ๋‹ค.
hash table ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๋“ฑํ˜ธ(=) ์—ฐ์‚ฐ์ด ์•„๋‹Œ ๋ถ€๋“ฑํ˜ธ ์—ฐ์‚ฐ์˜ ๊ฒฝ์šฐ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
๋™๋“ฑ ์—ฐ์‚ฐ(=)์— ํŠนํ™”๋œ hashtable์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.

 

 

 

Primary Index vs Secondary Index

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


Composite Index

์ธ๋ฑ์Šค๋กœ ์„ค์ •ํ•˜๋Š” ํ•„๋“œ์˜ ์†์„ฑ์ด ์ค‘์š”ํ•˜๋‹ค. title, author ์ด ์ˆœ์„œ๋กœ ์ธ๋ฑ์Šค๋ฅผ ์„ค์ •ํ•œ๋‹ค๋ฉด title ์„ search ํ•˜๋Š” ๊ฒฝ์šฐ, index ๋ฅผ ์ƒ์„ฑํ•œ ํšจ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ, author ๋งŒ์œผ๋กœ search ํ•˜๋Š” ๊ฒฝ์šฐ, index ๋ฅผ ์ƒ์„ฑํ•œ ๊ฒƒ์ด ์†Œ์šฉ์ด ์—†์–ด์ง„๋‹ค. ๋”ฐ๋ผ์„œ SELECT ์งˆ์˜๋ฅผ ์–ด๋–ป๊ฒŒ ํ•  ๊ฒƒ์ธ๊ฐ€๊ฐ€ ์ธ๋ฑ์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ์ƒ์„ฑํ•  ๊ฒƒ์ธ๊ฐ€์— ๋Œ€ํ•ด ๋งŽ์€ ์˜ํ–ฅ์„ ๋ผ์น˜๊ฒŒ ๋œ๋‹ค.

 

 


Index์˜ ์„ฑ๋Šฅ๊ณผ ๊ณ ๋ คํ•ด์•ผํ•  ์‚ฌํ•ญ

SELECT ์ฟผ๋ฆฌ์˜ ์„ฑ๋Šฅ์„ ์›”๋“ฑํžˆ ํ–ฅ์ƒ์‹œํ‚ค๋Š” INDEX ํ•ญ์ƒ ์ข‹์„๊นŒ?  ์•„๋‹ˆ๋‹ค.

 

- INDEX ๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด INSERT, DELETE, UPDATE ์ฟผ๋ฆฌ๋ฌธ์„ ์‹คํ–‰ํ•  ๋•Œ ๋ณ„๋„์˜ ๊ณผ์ •์ด ์ถ”๊ฐ€์ ์œผ๋กœ ๋ฐœ์ƒ

INSERT ์˜ ๊ฒฝ์šฐ INDEX ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๊ทธ๋งŒํผ ์„ฑ๋Šฅ์— ์†์‹ค์ด ๋”ฐ๋ฅธ๋‹ค.

DELETE ์˜ ๊ฒฝ์šฐ INDEX ์— ์กด์žฌํ•˜๋Š” ๊ฐ’์€ ์‚ญ์ œํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉ ์•ˆํ•œ๋‹ค๋Š” ํ‘œ์‹œ๋กœ ๋‚จ๊ฒŒ ๋œ๋‹ค.

์ฆ‰ row ์˜ ์ˆ˜๋Š” ๊ทธ๋Œ€๋กœ์ธ ๊ฒƒ์ด๋‹ค. ์ด ์ž‘์—…์ด ๋ฐ˜๋ณต๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? ์‹ค์ œ ๋ฐ์ดํ„ฐ๋Š” 10 ๋งŒ๊ฑด์ธ๋ฐ ๋ฐ์ดํ„ฐ๊ฐ€ 100 ๋งŒ๊ฑด ์žˆ๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋‚ณ์„ ์ˆ˜๋„ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์ธ๋ฑ์Šค๋Š” ๋” ์ด์ƒ ์ œ ์—ญํ• ์„ ๋ชปํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

UPDATE ์˜ ๊ฒฝ์šฐ๋Š” INSERT ์˜ ๊ฒฝ์šฐ, DELETE ์˜ ๊ฒฝ์šฐ์˜ ๋ฌธ์ œ์ ์„ ๋™์‹œ์— ์ˆ˜๋ฐ˜ํ•œ๋‹ค.

์ด์ „ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋˜๊ณ  ๊ทธ ์ž๋ฆฌ์— ์ƒˆ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ค๋Š” ๊ฐœ๋…์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ฆ‰ ๋ณ€๊ฒฝ ์ „ ๋ฐ์ดํ„ฐ๋Š” ์‚ญ์ œ๋˜์ง€ ์•Š๊ณ  insert ๋กœ ์ธํ•œ split ๋„ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

 

- ์ปฌ๋Ÿผ์„ ์ด๋ฃจ๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹์— ๋”ฐ๋ผ์„œ ์ธ๋ฑ์Šค์˜ ์„ฑ๋Šฅ์ด ์•…์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰, ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹์— ๋”ฐ๋ผ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค๋ฉด ํšจ์œจ์ ์ด๊ณ  ๋งŒ๋“ค๋ฉด ๋น„ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ์˜ ํ˜•์‹์ด ์กด์žฌํ•œ๋‹ค.

 

์ด๋ฆ„, ๋‚˜์ด, ์„ฑ๋ณ„ ์„ธ ๊ฐ€์ง€์˜ ํ•„๋“œ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ํ…Œ์ด๋ธ”์„ ์ƒ๊ฐํ•ด๋ณด์ž.

์ด๋ฆ„์€ ์˜จ๊ฐ– ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์กด์žฌํ•  ๊ฒƒ์ด๋ฉฐ ๋‚˜์ด๋Š” INT ํƒ€์ž…์„ ๊ฐ–์„ ๊ฒƒ์ด๊ณ , ์„ฑ๋ณ„์€ ๋‚จ, ๋…€ ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ์— ๋Œ€ํ•ด์„œ๋งŒ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•  ๊ฒƒ์ž„์„ ์‰ฝ๊ฒŒ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ๊ฒฝ์šฐ ์–ด๋–ค ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด์„œ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ผ๊นŒ? ์ด๋ฆ„์— ๋Œ€ํ•ด์„œ๋งŒ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ํšจ์œจ์ ์ด๋‹ค.

 

*์™œ ์„ฑ๋ณ„์ด๋‚˜ ๋‚˜์ด๋Š” ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋น„ํšจ์œจ์ ์ผ๊นŒ? 

10000 ๋ ˆ์ฝ”๋“œ์— ํ•ด๋‹นํ•˜๋Š” ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด์„œ 2000 ๋‹จ์œ„๋กœ ์„ฑ๋ณ„์— ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ๊ฐ’์˜ range ๊ฐ€ ์ ์€ ์„ฑ๋ณ„์€ ์ธ๋ฑ์Šค๋ฅผ ์ฝ๊ณ  ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋””์Šคํฌ I/O ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ๋งŒํผ ๋น„ํšจ์œจ์ ์ธ ๊ฒƒ์ด๋‹ค.

 

 

 

 


< ์ฐธ๊ณ  >

https://mungto.tistory.com/312

+ Recent posts