[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] ์ธ๋ฑ์Šค

์ธ๋ฑ์Šค ๊ฐœ๋…

์ธ๋ฑ์Šค๋ž€?

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

์ธ๋ฑ์Šค์˜ ํŠน์ง• 

  1. ์ผ๋ถ€ ์• ํŠธ๋ฆฌ๋ทฐํŠธ๋งŒ ์ธ๋ฑ์Šค์— ํฌํ•จ ๋˜๊ธฐ์— ๋ณดํ†ต ๋ฐ์ดํ„ฐ ํ™”์ผ ํฌ๊ธฐ์˜ 10~20% ์ •๋„์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง
  2. ์ธ๋ฑ์Šค๊ฐ€ ๋ฐ์ดํ„ฐ ํ™”์ผ๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ, ์ธ๋ฑ์Šค ์ˆœ์ฐจ์  ํƒ์ƒ‰ ์‹œ๊ฐ„ < ๋ฐ์ดํ„ฐ ํ™”์ผ ์ˆœ์ฐจ์  ํƒ์ƒ‰ ์‹œ๊ฐ„
  3. ๋”์šฑ์ด ์ธ๋ฑ์Šค์˜ ์—”ํŠธ๋ฆฌ๋“ค์€ ํƒ์ƒ‰ ํ‚ค ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ด์ง„ ํƒ์ƒ‰๋„ ๊ฐ€๋Šฅ 
  4. ์ธ๋ฑ์Šค์— ํฌํ•จ๋œ ์• ํŠธ๋ฆฌ๋ทฐํŠธ๋ฅผ ํƒ์ƒ‰ ํ‚ค๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, ์–ด๋– ํ•œ ์• ํŠธ๋ฆฌ๋ทฐํŠธ๋„ ํƒ์ƒ‰ํ‚ค๊ฐ€ ๋  ์ˆ˜ ์žˆ๊ธฐ์— ๋ฐ˜๋“œ์‹œ ๊ณ ์œ ํ•˜์ง€ ์•Š์Œ

์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ๊ฒฝ์šฐ 

  1. Where ์ ˆ์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์• ํŠธ๋ฆฌ๋ทฐํŠธ
  2. ์™ธ๋ž˜ํ‚ค๊ฐ€ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์• ํŠธ๋ฆฌ๋ทฐํŠธ 
  3. Join์— ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์• ํŠธ๋ฆฌ๋ทฐํŠธ

์‚ฌ์šฉ์„ ํ”ผํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ 

  1. Data ์ค‘๋ณต๋„๊ฐ€ ๋†’์€ ์• ํŠธ๋ฆฌ๋ทฐํŠธ 
  2. DML์ด ์ž์ฃผ ์ผ์–ด๋‚˜๋Š” ์• ํŠธ๋ฆฌ๋ทฐํŠธ

DML์ด ์ž์ฃผ ์ผ์–ด๋‚˜๋ฉด ์™œ ํ”ผํ•ด์•ผ ํ•˜๋Š”๊ฐ€? 

INSERT 

  1. ์‚ฝ์ž… ์ค‘์— Index split์ด ๋ฐœ์ƒํ• ์ˆ˜๋„ ์žˆ๋‹ค. (b-tree์˜ leaf-node๊ฐ€ ๊ฝ‰์ฐฌ ๊ฒฝ์šฐ ํ•˜๋‚˜์—์„œ ๋‘๊ฐœ๋กœ ๋‚˜๋‰˜์–ด์ง€๋Š” ํ˜„์ƒ, leaf-node๊ฐ€ ๊ฝ‰์ฐฌ ๊ฒฝ์šฐ leaf-node๋ฅผ ๋ถ„ํ• ์‹œ์ผœ์„œ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๊ธฐ ๋•Œ๋ฌธ) 
  2. ์ƒˆ๋กœ์šด ๋ธ”๋ก์„ ํ• ๋‹น ๋ฐ›์€ ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ธฐ๋Š” ์ž‘์—… ์ˆ˜ํ–‰, ๋ชจ๋“  ์ˆ˜ํ–‰ ๊ณผ์ •์ด ๋งŽ์€ ์–‘์˜ Redo๋ฅผ ์œ ๋ฐœํ•œ๋‹ค.
  3. Index split์ด ์ด๋ฃจ์–ด์ง€๋Š” ๋™์•ˆ ํ•ด๋‹น ๋ธ”๋ก์— ๋Œ€ํ•ด ํ‚ค ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์•ˆ๋˜๋ฏ€๋กœ DML์ด ๋ธ”๋กœํ‚น๋œ๋‹ค.

DELETE

  1. Table์—์„œ Data๊ฐ€ ์ง€์›Œ์ง€๋ฉด? : Data๊ฐ€ ์ง€์›Œ์ง€๊ณ , ๋‹ค๋ฅธ Data๊ฐ€ ๊ทธ ๊ณต๊ฐ„์„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ 
  2. Index์—์„œ Data๊ฐ€ ์ง€์›Œ์ง€๋ฉด? : Data๊ฐ€ ์ง€์›Œ์ง€์ง€ ์•Š๊ณ , ์‚ฌ์šฉ ์•ˆ๋จ ํ‘œ์‹œ๋งŒ ํ•ด๋‘  (Index์™€ Table์˜ Data์ˆ˜๊ฐ€ ๋‹ค๋ฆ„) 

UPDATE

  1. Table์—์„œ Data๊ฐ€ Update? : Index๋Š” Update ํ•  ์ˆ˜ ์—†์Œ 
  2. Index์—์„œ์˜ Update :  Index์—๋Š” Update์˜ ๊ฐœ๋…์ด ์—†์–ด์„œ Delete๊ฐ€ ๋ฐœ์ƒํ•œ ํ›„,  Insert ์ž‘์—… 

Index ์ƒ์„ฑ

  1. ํ…Œ์ด๋ธ” ์ƒ์„ฑ์‹œ Primary Key๋ฅผ ์ง€์ •ํ•˜๋ฉด ์ž๋™์œผ๋กœ Clustered Index๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.
    Clustered Index๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ UNIQUE ์ œ์•ฝ ์กฐ๊ฑด์ด ์žˆ๋Š” ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—”์ง„์—์„œ๋Š” ์ž๋™์œผ๋กœ Non-Clustered Index๋ฅผ ๋งŒ๋“ ๋‹ค.
  2. Primary Key๋ฅผ ์ง€์ •ํ•˜๋Š” ์—ด์— ๊ฐ•์ œ์ ์œผ๋กœ Non-Clustered Index๋ฅผ ์ง€์ • ๊ฐ€๋Šฅํ•˜๋‹ค.
  3. ๊ธฐ์กด ํ…Œ์ด๋ธ”์— PRIMARY KEY ์ œ์•ฝ ์กฐ๊ฑด์„ ์ ์šฉํ•˜๋ ค ํ•˜๊ฑฐ๋‚˜ ํ•ด๋‹น ํ…Œ์ด๋ธ”์— Clustered Index๊ฐ€ ์ด๋ฏธ ์žˆ์œผ๋ฉด Non-Clustered Index๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์ ์šฉํ•œ๋‹ค.
  4. ์ œ์•ฝ ์กฐ๊ฑด ์—†์ด ํ…Œ์ด๋ธ” ์ƒ์„ฑ์‹œ์— Index๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†์œผ๋ฉฐ, Index๊ฐ€ ์ž๋™ ์ƒ์„ฑ๋˜๊ธฐ ์œ„ํ•œ ์—ด์˜ ์ œ์•ฝ ์กฐ๊ฑด์€ Primary Key๋˜๋Š” Unique ๋ฟ์ด๋‹ค.

 ์ธ๋ฑ์Šค์˜ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์œ ํ˜•

ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค 

  1. ํ•ด๋‹น ํ‚ค ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ…Œ์ด๋ธ”์ด๋‚˜ ๋ทฐ์˜ ๋ฐ์ดํ„ฐ ํ–‰์„ ์ •๋ ฌํ•˜๊ณ  ์ €์žฅํ•œ๋‹ค. 
  2. ๋ฐ์ดํ„ฐ๋“ค์€ ํ•œ ๊ฐ€์ง€ ์ˆœ์„œ๋กœ๋งŒ ์ €์žฅ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ…Œ์ด๋ธ”๋‹น ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค๋Š” ํ•˜๋‚˜๋งŒ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
  3. ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค๊ฐ€ ํฌํ•จ๋œ ํ…Œ์ด๋ธ”์„ ํด๋Ÿฌ์Šคํ„ฐํ˜• ํ…Œ์ด๋ธ”์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ํด๋Ÿฌ์Šคํ„ฐํ˜• ํ…Œ์ด๋ธ”์ด ์•„๋‹ˆ๋ฉด ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๊ตฌ์กฐ๋กœ ์ €์žฅ๋œ๋‹ค.
  4. ํ‚ค ๊ฐ’์— ๋”ฐ๋ผ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ ํ–‰์ด๋ฏ€๋กœ ๋ฒ”์œ„ ์งˆ์˜์— ์œ ๋ฆฌํ•˜๋‹ค.

๋น„ ํด๋Ÿฌ์Šคํ„ฐํ˜• ์ธ๋ฑ์Šค 

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

REFERENCE

ORACLE์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฐ์›€ํ„ฐ, ํ™์˜๊ฒฝ ์ง€์Œ, ์ƒ๋Šฅ์ถœํŒ

https://velog.io/@gillog/SQL-Clustered-Index-Non-Clustered-Index

 

[SQL] Clustered Index & Non-Clustered Index

์•ž์„œ Index์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌ ํ–ˆ์—ˆ์ง€๋งŒ, Clustered Index์™€ Non-Clustered Index๋ฅผ ์ž์„ธํžˆ ๋‹ค๋ฃจ์ง€ ์•Š์•„ ์ด๋ฒˆ ์‹œ๊ฐ„์— ์ž์„ธํžˆ ๋‘ Index์˜ ์ฐจ์ด๋ฅผ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค.Index๋Š” DB์˜ ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์„ ๋•Œ, ๊ฒ€์ƒ‰ ์†๋„

velog.io

https://lng1982.tistory.com/144

 

ํด๋Ÿฌ์Šคํ„ฐ๋“œ ์ธ๋ฑ์Šค์™€ ๋„Œ ํด๋Ÿฌ์Šคํ„ฐ๋“œ ์ธ๋ฑ์Šค

๋ช‡์ผ์ „์— ํด๋Ÿฌ์Šคํ„ฐ๋“œ ์ธ๋ฑ์Šค์™€ ๋„Œ ํด๋Ÿฌ์Šคํ„ฐ๋“œ ์ธ๋ฑ์Šค์— ๋Œ€ํ•ด์„œ ๋‚˜์—๊ฒŒ ๋ฌผ์–ด๋ณด์‹  ๋ถ„์ด ๊ณ„์…จ๋‹ค. ํ—Œ๋ฐ ๋‚ด ๊ธฐ์–ต ์†์—๋Š” ํด๋Ÿฌ์Šคํ„ฐ๋“œ ์ธ๋ฑ์Šค๋Š” ํ…Œ์ด๋ธ” ๋‹น 1๊ฐœ๋งŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ๋งŒ ๊ธฐ์–ต๋‚  ๋ฟ ๋‹ค๋ฅธ

lng1982.tistory.com