๐Ÿ—ƒ๏ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

DB ์ธ๋ฑ์Šค ๊ฐœ๋… ์ •๋ฆฌ: ์ €์žฅ ๊ตฌ์กฐ, ์ƒ์„ฑ ๊ณผ์ •, ๋™์ž‘ ์›๋ฆฌ

mallin 2024. 12. 12. 18:26

0. ๋ฐฐ๊ฒฝ

DB๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์ธ๋ฑ์Šค์˜ ์ค‘์š”์„ฑ์„ ๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ์€ ๊ฑฐ์˜ ์—†์„ ํ…๋ฐ์š”.

์ด์ƒ์ ์œผ๋กœ๋Š” ํ…Œ์ด๋ธ” ์„ค๊ณ„ ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ์ธ๋ฑ์Šค๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ, ํ˜„์‹ค์—์„œ๋Š” ์ฝ”๋“œ๊ฐ€ ๋ฐฐํฌ๋œ ํ›„์—์•ผ

"DB ๋ถ€ํ•˜๊ฐ€ ๋„ˆ๋ฌด ์ปค์กŒ๋„ค ? "

"์กฐํšŒ ์†๋„๊ฐ€ ์™œ ์ด๋ ‡๊ฒŒ ๋А๋ฆฌ์ง€"

์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ํ›„ ๋’ค๋Šฆ๊ฒŒ ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜์Šต๋‹ˆ๋‹ค๐Ÿ˜… 

 

ํŠนํžˆ, ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ์™€ ๋‚ด๋ถ€ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์ •ํ™•ํžˆ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋ฉด

์„ฑ๋Šฅ ๊ฐœ์„ ์€ ์ปค๋…• ์˜คํžˆ๋ ค ์†๋„๊ฐ€ ๋” ๋А๋ ค์ง€๋Š” ๊ฒฝ์šฐ๋„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. 

 

์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ์„ ์ขŒ์šฐํ•˜๋Š” ํ•ต์‹ฌ ์š”์†Œ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ, ์ž˜๋ชป ์‚ฌ์šฉํ•˜๋ฉด ์˜คํžˆ๋ ค ์„ฑ๋Šฅ์„ ์•…ํ™”์‹œํ‚ค๋Š” ์–‘๋‚ ์˜ ๊ฒ€์ด ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์˜ค๋Š˜์€ ์ธ๋ฑ์Šค๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค !


1. ์ธ๋ฑ์Šค(INDEX) ๋ž€ ?

๋„ค์ด๋ฒ„ ์˜์–ด ์‚ฌ์ „์—์„œ index ๋ž€ ๋ฌด์Šจ ์˜๋ฏธ์ธ์ง€ ์ฐพ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์ƒ‰์ธ, ์ƒ‰์ธ์„ ๋งŒ๋“ค๋‹ค ๋ผ๊ณ  ์ •์˜ํ•˜๊ณ  ์žˆ๋Š”๋ฐ์š”.

DB ์— ์ ์šฉํ•ด๋ณด์ž๋ฉด ?

์ธ๋ฑ์Šค(index) ๋ž€ DB ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ƒ‰์ธ์ž…๋‹ˆ๋‹ค !

 

์˜ˆ๋ฅผ ๋“ค์–ด ๋งŒ์•ฝ 1000ํŽ˜์ด์ง€๊ฐ€ ๋„˜๋Š” ์ฑ…์—์„œ ํŠน์ • ๋‹จ์–ด๋ฅผ ์ฐพ์œผ๋ ค๋ฉด ?

  • ์ธ๋ฑ์Šค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ -> ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ํŽ˜์ด์ง€๋ฅผ ํ•œ ์žฅ์”ฉ ๋ชจ๋‘ ๋’ค์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. (full scan)
  • ์ธ๋ฑ์Šค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ -> ๋ชฉ์ฐจ์—์„œ ํ•ด๋‹น ํ‚ค์›Œ๋“œ๋ฅผ ์ฐพ์•„ ๋ฐ”๋กœ ํ•ด๋‹น ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค !

  • ์ธ๋ฑ์Šค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ → ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค (full scan)
  • ์ธ๋ฑ์Šค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ → ์ •๋ ฌ๋œ ์ธ๋ฑ์Šค๋ฅผ ํƒ์ƒ‰ํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ์ธ๋ฑ์Šค์˜ ์ €์žฅ ๊ตฌ์กฐ

์ฑ…์˜ ๋ชฉ์ฐจ๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋ชฉ์ฐจ๋Š” ๋ณธ๋ฌธ์˜ ๋‚ด์šฉ๊ณผ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์ง€๋งŒ, ๋ณธ๋ฌธ์„ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค.

์ด์ฒ˜๋Ÿผ ์ธ๋ฑ์Šค๋„ ๋…ผ๋ฆฌ์ , ๋ฌผ๋ฆฌ์ ์œผ๋กœ ํ…Œ์ด๋ธ”๊ณผ ๋…๋ฆฝ์ ์œผ๋กœ ์ €์žฅ๋˜๋ฉฐ, ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰์„ ๋น ๋ฅด๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

์ธ๋ฑ์Šค๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‘ ๊ฐœ์˜ ์ปฌ๋Ÿผ (๊ฒ€์ƒ‰๊ฐ’, ์œ„์น˜์ •๋ณด) ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  ๊ฒ€์ƒ‰๊ฐ’ (KEY) ์œ„์น˜์ •๋ณด (ROWID or Primary Key)
์—ญํ•  ๊ฒ€์ƒ‰ ๊ธฐ์ค€์ด ๋˜๋Š” ๊ฐ’์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค ํ•ด๋‹น ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
๋‚ด์šฉ ํ…Œ์ด๋ธ”์˜ ํŠน์ • ์—ด์˜ ๊ฐ’์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ name ์—ด์— ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด name ์˜ ๊ฐ’๋“ค์ด KEY ์ปฌ๋Ÿผ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. KEY ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
Oracle ์€ ROWID(๋ฌผ๋ฆฌ์  ์ฃผ์†Œ), MySQL(InnoDB) ๋Š” Primary Key ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
์ •๋ ฌ ์ธ๋ฑ์Šค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ B-Tree ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— KEY ๊ฐ’๋„ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์œ„์น˜์ •๋ณด ๋กœ ์ •๋ ฌ๋˜์ง„ ์•Š๊ณ , KEY ๊ฐ’์˜ ์ •๋ ฌ ์ˆœ์„œ์— ๋”ฐ๋ผ ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค.

 

๊ฐ๊ฐ์€ ์œ„์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ์š”

๊ฒ€์ƒ‰๊ฐ’ = ์‹ค์ œ ๊ฐ’, ์œ„์น˜์ •๋ณด = ์‹ค์ œ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜

๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค !


3. ์ธ๋ฑ์Šค์˜ ์ƒ์„ฑ ๊ณผ์ •

์ธ๋ฑ์Šค๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ตฌ์กฐ๋ฅผ ํŒŒ์•…ํ–ˆ๋‹ค๋ฉด ์ด์ œ๋Š” ์ธ๋ฑ์Šค์˜ ์ƒ์„ฑ ๊ณผ์ •์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ด…์‹œ๋‹ค !

์ธ๋ฑ์Šค๋Š” ์ด 4๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ์„œ ์ƒ์„ฑ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 

 

  1. ์ „์ฒด ํ…Œ์ด๋ธ” ์Šค์บ”
    • ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋Š” ์ปฌ๋Ÿผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ์ „์ฒด ํ…Œ์ด๋ธ”์„ ์Šค์บ”ํ•ฉ๋‹ˆ๋‹ค.
    • ํŠน์ • ์ปฌ๋Ÿผ์—๋งŒ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น ์ปฌ๋Ÿผ๊ณผ ์œ„์น˜์ •๋ณด(ROWID, PK) ๋งŒ ์ฝ์Šต๋‹ˆ๋‹ค.
  2. ์ •๋ ฌ
    • PGA(Process Global Area, ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„) ๋‚ด์˜ Sort Area์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค
    • ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ๋Š” ์ €์žฅ๋  ๊ตฌ์กฐ(B-tree, Hash ๋“ฑ) ์— ๋งž๊ฒŒ ์ •๋ฆฌ๋ฉ๋‹ˆ๋‹ค
    • ๋งŒ์•ฝ PGA์˜ Sort Area๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด, Temporary Tablespace(์ž„์‹œ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค)์— ์ €์žฅ ํ›„ ๋””์Šคํฌ์—์„œ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ์ด๋Š” ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
  3. Block์— ๊ธฐ๋ก 
    • ์ •๋ ฌ์ด ๋๋‚œ ๋ฐ์ดํ„ฐ๋Š” ๋ฐ์ดํ„ฐ ๋ธ”๋ก์— ์ €์žฅ๋˜๋ฉฐ, ์ดํ›„ B-Tree ๋˜๋Š” Bitmap ์ธ๋ฑ์Šค๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค
    • B-Tree ์ธ๋ฑ์Šค์˜ ๊ฒฝ์šฐ ๋ฃจํŠธ ๋…ธ๋“œ - ๋ธŒ๋žœ์น˜ ๋…ธ๋“œ - ๋ฆฌํ”„ ๋…ธ๋“œ ๊ตฌ์กฐ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
    • ๋ฆฌํ”„ ๋…ธ๋“œ๋Š” ์ •๋ ฌ๋œ ROWID ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์ œํ•œ 
    • ์ธ๋ฑ์Šค ์ƒ์„ฑ ์ค‘ DML(INSERT, UPDATE, DELETE)์ด ๋ฐœ์ƒํ•˜๋ฉด ์ผ๊ด€์„ฑ์ด ๊นจ์งˆ ์œ„ํ—˜์ด ์žˆ์œผ๋ฏ€๋กœ, ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์„ ์ œํ•œํ•˜๋Š” ์กฐ์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
    • ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ฐ˜์ ์ธ ์ธ๋ฑ์Šค ์ƒ์„ฑ ๋ฐฉ์‹์—์„œ๋Š” ํ…Œ์ด๋ธ”์„ Lock ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์„ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.
    • Online Indexing ์ด ์ง€์›๋˜๋Š” ๊ฒฝ์šฐ ํ…Œ์ด๋ธ”์„ ์ฝ์œผ๋ฉด์„œ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋˜, ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์„ ํ—ˆ์šฉํ•˜๋ฉด์„œ๋„ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์ƒˆ๋กญ๊ฒŒ ๋ฐœ์ƒํ•˜๋Š” DML ์ž‘์—…์„ ์ถ”์ ํ•˜์—ฌ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋ฐ˜์˜)

 


4. ์ธ๋ฑ์Šค๊ฐ€ ๋™์ž‘ํ•˜๋Š” ์˜ˆ์‹œ

name ์„ ๊ธฐ์ค€์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค์—ˆ๊ณ , name ์— PARK, KIM, LEE ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ฉ์‹œ๋‹ค.

B-Tree ์ธ๋ฑ์Šค ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Oracle ๊ธฐ์ค€ ์œผ๋กœ ์ธ๋ฑ์Šค์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ €์žฅ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ฒ€์ƒ‰๊ฐ’ ์œ„์น˜์ •๋ณด (ROWID)
PARK 1001 (์‹ค์ œ PARK ์˜ ๋ฐ์ดํ„ฐ ์œ„์น˜)
KIM 1002 (์‹ค์ œ KIM ์˜ ๋ฐ์ดํ„ฐ ์œ„์น˜)
LEE 1003 (์‹ค์ œ LEE ์˜ ๋ฐ์ดํ„ฐ ์œ„์น˜)

 

์ด๋ ‡๊ฒŒ ์ €์žฅ๋˜๋ฉด ์ธ๋ฑ์Šค๋Š” 

์ธ๋ฑ์Šค ํƒ์ƒ‰ -> ๋ฐ์ดํ„ฐ ์œ„์น˜ ํ™•์ธ -> ์‹ค์ œ ๋ฐ์ดํ„ฐ ์กฐํšŒ ์˜ ๊ณผ์ •์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

 

์‚ฌ์šฉ์ž๊ฐ€ 'PARK' ์ด๋ผ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ๋•Œ

 

๐Ÿ“Œ 1๏ธโƒฃ B-Tree ์ธ๋ฑ์Šค๋ฅผ ํƒ์ƒ‰

  • name='PARK'์„ ๊ฒ€์ƒ‰ํ•˜๋ฉด, B-Tree ์ธ๋ฑ์Šค์—์„œ ์ •๋ ฌ๋œ ์ˆœ์„œ๋กœ ํƒ์ƒ‰์ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.
  • ์ด์ง„ ํƒ์ƒ‰(Binary Search) ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ PARK๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ 2๏ธโƒฃ ์ธ๋ฑ์Šค์—์„œ ๋ฐ์ดํ„ฐ ์œ„์น˜ ํ™•์ธ

  • Oracle: PARK์— ํ•ด๋‹นํ•˜๋Š” ROWID(1001) ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค
  • MySQL (InnoDB): PARK์— ํ•ด๋‹นํ•˜๋Š” ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค

๐Ÿ“Œ 3๏ธโƒฃ ํ…Œ์ด๋ธ”์—์„œ ์‹ค์ œ ๋ฐ์ดํ„ฐ ์กฐํšŒ

  • Oracle: ROWID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ”์—์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
  • MySQL (InnoDB): ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ๋“œ ์ธ๋ฑ์Šค๋ฅผ ๋‹ค์‹œ ๊ฒ€์ƒ‰ํ•œ ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.

์˜ ํ”„๋กœ์„ธ์Šค๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. 

์ด๋Ÿฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ํ›จ์”ฌ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿ™Œ


5. ์ธ๋ฑ์Šค๋ฅผ ๋‚จ๋ฐœํ•˜๋ฉด ์•ˆ๋˜๋Š” ์ด์œ 

๐Ÿ’ฌ : "์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์กฐํšŒ ์†๋„๊ฐ€ ๋นจ๋ผ์ง€๋‹ˆ๊น ๋ชจ๋“  ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ์ปฌ๋Ÿผ์— ์ธ๋ฑ์Šค๋ฅผ ๊ฑธ์–ด์•ผ๊ฒ ๊ตฐ ?! "

๐Ÿ™…‍โ™€๏ธ ๋•ก ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค !

 

์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ์ง€๋งŒ, ๋งˆ๊ตฌ์žก์ด๋กœ ์ƒ์„ฑํ•˜๋ฉด ์˜คํžˆ๋ ค ์ „์ฒด์ ์ธ ์„ฑ๋Šฅ์ด ๋‚˜๋น ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค๋ฅผ ๋‚จ๋ฐœํ•˜๋ฉด ์„ฑ๋Šฅ์ด ์ €ํ•˜๋˜๋Š” ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 

 

  1. INSERT, DELETE, UPDATE ์†๋„ ์ €ํ•˜ 
    • ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ๋•Œ๋งˆ๋‹ค, ๋ชจ๋“  ์ธ๋ฑ์Šค๋„ ํ•จ๊ป˜ ๊ฐฑ์‹ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์ฆ‰, ์ธ๋ฑ์Šค๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ๋ณ€๊ฒฝ ์ž‘์—…(์“ฐ๊ธฐ ์ž‘์—…, Write Operation)์ด ๋А๋ ค์ง‘๋‹ˆ๋‹ค.
  2. ์ธ๋ฑ์Šค์˜ ์ €์žฅ ๊ณต๊ฐ„ ์ฆ๊ฐ€
    • ์ธ๋ฑ์Šค๋„ ๊ฒฐ๊ตญ ๋””์Šคํฌ(์Šคํ† ๋ฆฌ์ง€)์— ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ
    • ์ธ๋ฑ์Šค๊ฐ€ ๋งŽ์•„์ง€๋ฉด ๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•˜๊ณ , ์บ์‹ฑ ํšจ์œจ์ด ๋–จ์–ด์ง‘๋‹ˆ๋‹ค.
  3. ์ธ๋ฑ์Šค ์„ ํƒ์ด ๋น„ํšจ์œจ์ ์œผ๋กœ ์ด๋ฃจ์–ด์งˆ ๊ฐ€๋Šฅ์„ฑ
    • ์ธ๋ฑ์Šค๊ฐ€ ๋งŽ์•„์ง€๋ฉด, DB ์˜ตํ‹ฐ๋งˆ์ด์ € ๊ฐ€ ์–ด๋–ค ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ• ์ง€ ํŒ๋‹จํ•˜๋Š” ๋ฐ ๋” ๋งŽ์€ ์‹œ๊ฐ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
    • ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์ž˜๋ชป๋œ ์ธ๋ฑ์Šค๋ฅผ ์„ ํƒํ•ด์„œ ์„ฑ๋Šฅ์ด ๋” ๋–จ์–ด์งˆ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์ „์— SQL ์„ ๋จผ์ € ์ตœ์ ํ™” ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 

๋น„ํšจ์œจ์ ์ธ SQL์„ ์ตœ์ ํ™”ํ•˜๋ฉด ์ธ๋ฑ์Šค ์—†์ด๋„ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค !!


6. ๊ฒฐ๋ก 

์ธ๋ฑ์Šค๋Š” DB ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฌด์กฐ๊ฑด ๋งŽ์ด ์ถ”๊ฐ€ํ•œ๋‹ค๊ณ  ์ข‹์€ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

 

๐Ÿ…พ๏ธ ์ ์ ˆํ•œ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ

๐Ÿ™…‍โ™€๏ธ ๋ถˆํ•„์š”ํ•œ ์ธ๋ฑ์Šค๋Š” ์˜คํžˆ๋ ค ์„ฑ๋Šฅ์„ ์ €ํ•˜์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์ „์— ๋ฐ˜๋“œ์‹œ SQL ์„ ๋จผ์ € ์ตœ์ ํ™”ํ•˜๊ณ , ํ•„์š”ํ•œ ๊ณณ์—๋งŒ ์‹ ์ค‘ํ•˜๊ฒŒ ์ ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์žŠ์ง€ ๋งˆ์„ธ์š” !!

 

๋‹ค์Œ ๊ธ€์—์„œ๋Š” ์ธ๋ฑ์Šค์˜ ์ข…๋ฅ˜์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿš€


๋ ˆํผ๋Ÿฐ์Šค

[Database] ์ธ๋ฑ์Šค(index)๋ž€?