0. ์๋ก
์ธ๋ฑ์ค์ ๊ฐ๋ ์ ๋ํด์ ๊ถ๊ธํ์ ๋ถ์ ์ด์ ๊ธ (DB ์ธ๋ฑ์ค ๊ฐ๋ ์ ๋ฆฌ: ์ ์ฅ ๊ตฌ์กฐ, ์์ฑ ๊ณผ์ , ๋์ ์๋ฆฌ) ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์ !
(1) ์ธ๋ฑ์ค๋ ? (๊ฐ๋ , ๊ตฌ์กฐ, ๋จ๋ฐํ๋ฉด ์๋๋ ์ด์ )
0. ๋ฐฐ๊ฒฝDB๋ฅผ ๋ค๋ฃฐ ๋ ์ธ๋ฑ์ค์ ์ค์์ฑ์ ๋ชจ๋ฅด๋ ์ฌ๋์ ๊ฑฐ์ ์์ ํ ๋ฐ์.์ด์์ ์ผ๋ก๋ ํ ์ด๋ธ ์ค๊ณ ์ด๊ธฐ ๋จ๊ณ์์ ์ธ๋ฑ์ค๋ฅผ ์ค์ ํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ง๋ง,์ค๋ฌด์์๋ ์ฝ๋๋ฅผ ๋ฐฐํฌํ ํ์์ผ "๋๋น
soyeon-devlog.tistory.com
์ธ๋ฑ์ค๋ฅผ ๋ถ๋ฅํ ๋, ํฌ๊ฒ
- ๊ตฌ์กฐ ๊ธฐ๋ฐ ์ธ๋ฑ์ค
- ์ ์ฅ ๋ฐฉ์ ๊ธฐ๋ฐ ์ธ๋ฑ์ค
๋ก ๋๋์ด์ง๋๋ฐ์
๊ฐ๊ฐ์ ๋ถ๋ฅ์ ์ํด์๋ ์ธ๋ฑ์ค๋ค์ ๋ํด์ ์ง๊ธ๋ถํฐ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค โ๏ธ
1. ๊ตฌ์กฐ ๊ธฐ๋ฐ ์ธ๋ฑ์ค
๊ตฌ์กฐ ๊ธฐ๋ฐ ์ธ๋ฑ์ค์๋ ์ ๋ง ๋ค์ํ ์ข ๋ฅ์ ์ธ๋ฑ์ค๊ฐ ์ํด์๋๋ฐ์!
์ด๋ฒ ํฌ์คํ ์์๋ ๋ํ์ ์ธ ๋ช ๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
- B-tree Index
- B+Tree Index
- BitMap Index
- IOT Index
1-1. B-Tree Index
B-Tree๋ ๊ฐ์ฅ ๋ณดํธ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ธ๋ฑ์ค ๊ตฌ์กฐ์ด๋ฉฐ, ๊ท ํ ํ์ ํธ๋ฆฌ(Balanced Search Tree) ์ ๋๋ค
๊ท ํ ํ์ ํธ๋ฆฌ๋ ?
ํธ๋ฆฌ์ ๋์ด๊ฐ ๊ท ํ์ ์ ์งํ๋๋ก ์๋์ผ๋ก ์กฐ์ ๋๋ ์ด์งํ์ ํธ๋ฆฌ๋ฅผ ์๋ฏธํฉ๋๋ค
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํธ๋ฆฌ์ ๋์ด๊ฐ ์ต์ํ์ผ๋ก ์ ์ง๋๊ณ , ์ด๋ฅผ ํตํด ๊ฒ์ / ์ฝ์ / ์ญ์ ์ฐ์ฐ์ด O(log n) ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋๋ค
ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ ๋ ธ๋๋ ๋ฃจํธ ๋ ธ๋ / ๋ธ๋์น ๋ ธ๋ / ๋ฆฌํ ๋ ธ๋๋ก ๋๋์ด์ง๋๋ฐ ๊ฐ๊ฐ์ ํน์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค !
์์น | ๋ด์ฉ | ์ค๋ช | |
๋ฃจํธ ๋ ธ๋ | ํธ๋ฆฌ ์ต์๋จ | ํค์ ํฌ์ธํฐ | ์ต์ 2๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง๋ค (๋จ, ๋ฃจํธ ๋ ธ๋ ๊ฐ ๋ฆฌํ๋ ธ๋ ์ผ ๊ฒฝ์ฐ๋ ์์ธ) |
๋ธ๋์น ๋ ธ๋ | ์ค๊ฐ ๋ ธ๋๋ค | ์ฌ๋ฌ ๊ฐ์ ํค์ ์์ ํฌ์ธํฐ | ๊ฒ์ ์ ํค ๊ฐ์ ๋น๊ตํ๋ฉด์ ์์ ๋ ธ๋๋ก ์ด๋ |
๋ฆฌํ ๋ ธ๋ | ๊ฐ์ฅ ํ์ ๋ ธ๋ | ์ค์ ๋ฐ์ดํฐ (๋ ์ฝ๋) ์ ์ฅ | ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ |
๋ฑํธ ๋ฐ ๋ถ๋ฑํธ ์ฐ์ฐ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ์ธ๋ฑ์ค์ด๋ฉฐ,
๊ฐ ๋ ธ๋๊ฐ ๊ฐ์ง ์ ์๋ key ์ child ๊ฐ์๋ DBMS ์ค์ ๋ฐ ๋ธ๋ก ํฌ๊ธฐ์ ๋ค๋ผ ๋ค๋ฆ ๋๋ค
1-2. B+Tree Index
B+Tree๋ ์ด๋ฆ์์ ์ ์ ์๋ฏ์ด B-Tree์ ํ์ฅ(๊ฐ์ )๋ ๋ฒ์ ์
๋๋ค! ๐
B+Tree๋ ์์ ๋
ธ๋๊ฐ 2๊ฐ ์ด์์ธ B-Tree๋ฅผ ๊ฐ์ ํ ์ธ๋ฑ์ค ๊ตฌ์กฐ๋ก,
๋ง์ด ์ฌ์ฉํ๋ DBMS ์ค ํ๋์ธ InnoDB (MySQL์ ๊ธฐ๋ณธ ์คํ ๋ฆฌ์ง ์์ง)๋ B+Tree Index๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
B-Tree ์ B+Tree ์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐฉ์์ ๋๋ค !
ํน์ง | B-Tree | B+Tree |
๋ธ๋์น ๋ ธ๋ | ํค, ๋ฐ์ดํฐ ์ ์ฅ ๊ฐ๋ฅ | ํค๋ง ์ ์ฅ |
๋ฆฌํ ๋ ธ๋ | ์ผ๋ถ ๋ฐ์ดํฐ ์ ์ฅ ๊ฐ๋ฅ | ๋ชจ๋ ๋ฐ์ดํฐ ์ ์ฅ (ํฌ์ธํฐ ํฌํจ) |
๋ฆฌํ ๋ ธ๋ ๊ฐ ์ฐ๊ฒฐ | X (๋ฒ์ ๊ฒ์ ๋นํจ์จ์ ) | Linked List ๋ก ์ฐ๊ฒฐ (๋ฒ์ ๊ฒ์ ๋น ๋ฆ) |
๊ฒ์ ์๋ | ๋ค์ ๋๋ฆผ | ์ผ๊ด๋ ๊ฒ์ ์ฑ๋ฅ (ํญ์ ๋ฆฌํ ๋ ธ๋์์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๊ธฐ ๋๋ฌธ) |
์ค์ ๋ฐ์ดํฐ๋ ์ค์ง ๋ฆฌํ ๋ ธ๋์๋ง ์ ์ฅ๋๋ฉฐ, ๋ชจ๋ ๋ฆฌํ ๋ ธ๋๊ฐ Linked List ๋ก ์ฐ๊ฒฐ๋์ด ์๊ธฐ ๋๋ฌธ์
๋ฒ์ ๊ฒ์ ์ฑ๋ฅ์ด B-Tree ๋ณด๋ค ํจ์ฌ ๋น ๋ฆ ๋๋ค !!!!
๋ฆฌํ ๋ ธ๋๊ฐ Linked List ๋ก ์ฐ๊ฒฐ๋์ด ์๋ค๋๊ฒ ์ ๋น ๋ฅธ๊ฑด์ง ์ดํด๊ฐ ์ ๋ ์ ์๋๋ฐ์ ๐ค
B+Tree์์ 50์ ๊ฒ์ํ๋ค๊ณ ๊ฐ์ ํ๋ฉด:
1๏ธโฃ ๋ธ๋์น ๋
ธ๋์์ 50์ด ์ด๋์ ์์นํ๋์ง ํ์ (๋ธ๋์น ๋
ธ๋๋ ํค๋ง ์ ์ฅ)
2๏ธโฃ ๋ฆฌํ ๋
ธ๋๊น์ง ์ด๋ํ์ฌ 50์ ์ฐพ์ (๋ชจ๋ ๋ฐ์ดํฐ๋ ๋ฆฌํ ๋
ธ๋์ ์ ์ฅ๋จ)
3๏ธโฃ ๋ง์ฝ 50๋ณด๋ค ํฐ ๊ฐ์ ์ฐพ๊ณ ์ถ๋ค๋ฉด? → ๋ฆฌํ ๋
ธ๋๋ผ๋ฆฌ Linked List๋ก ์ฐ๊ฒฐ๋์ด ์์ด ์ฝ๊ฒ ์ด๋ ๊ฐ๋ฅ โ
๋ง์ฝ B-Tree ์์ 50์ ๊ฒ์ํ๊ณ , 50๋ณด๋ค ํฐ ๊ฐ์ ์ฐพ๊ณ ์ ํ๋ค๋ฉด?
B-Tree ๋ ๋ฆฌํ ๋ ธ๋๋ผ๋ฆฌ ์ฐ๊ฒฐ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ๋ค์ ๋ธ๋์น ๋ ธ๋๋ฅผ ํ์ํด์ผ ํ ์๋ ์์ต๋๋ค
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ฒ์ ๊ฒ์ ์ ๋ถํ์ํ ํ์์ด ๋ฐ์ํ์ฌ ์ฑ๋ฅ์ด ์ ํ๋ฉ๋๋ค ๐ฅบ
1-3. Bitmap Index
Bitmap Index ๋ ์ค๋ณต ๊ฐ์ด ๋ง์ ์ปฌ๋ผ์์ ์ต์ ์ ์ฑ๋ฅ์ ์ ๊ณตํ๋ ์ธ๋ฑ์ค์ ๋๋ค
(์ : ์ฑ๋ณ, ๊ตญ๊ฐ ์ฝ๋, ์ํ ๊ฐ ๋ฑ๊ณผ ๊ฐ์ด ๊ฐ์ ์ข ๋ฅ๊ฐ ์ ๊ณ , ์ค๋ณต์ด ๋ง์ ๊ฒฝ์ฐ)
์ปฌ๋ผ ๊ฐ์ ๋นํธ๋งต(BitMap)์ผ๋ก ๋ณํํ์ฌ ์ ์ฅํ๋ฉฐ, ROWID๋ฅผ ํตํด ํด๋น ๋ฐ์ดํฐ ์์น๋ฅผ ์ถ์ ํฉ๋๋ค
๋นํธ๋ก ๋ณํํ์ฌ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ AND, OR ๊ฐ์ ๋ ผ๋ฆฌ ์ฐ์ฐ๋ ๋นํธ ์ฐ์ฐ์ผ๋ก ์ฒ๋ฆฌํ์ฌ ๋น ๋ฅธ ๊ฒ์์ด ๊ฐ๋ฅํฉ๋๋ค
ํ์ง๋ง, INSERT / UPDATE / DELETE ์ ๋นํธ๋งต์ ์ฌ๊ตฌ์ฑํด์ผํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํฉ๋๋ค.
1-4. IOT Index
IOT ์ ํ ๋ค์ด๋ฐ์ Index Organized Table ๋ก ํ ์ด๋ธ ์์ฒด๋ฅผ B-Tree ์ธ๋ฑ์ค ๊ตฌ์กฐ๋ก ์ ์ฅํ๋ ํน์ํ ํํ์ ํ ์ด๋ธ์ ๋๋ค.
์ผ๋ฐ์ ์ธ ์ธ๋ฑ์ค๋ ROWID ๋ฅผ ์ ์ฅํ์ฌ ํ ์ด๋ธ์ ์ฐธ์กฐํ์ง๋ง,
IOT ๋ ๋ฐ์ดํฐ ์์ฒด๋ฅผ ์ธ๋ฑ์ค ๋ฆฌํ ๋ ธ๋์ ์ ์ฅํฉ๋๋ค !!
ํ ์ด๋ธ์ ์กฐํํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ฒ์ ์ฑ๋ฅ์ด ํฅ์๋ ์ ์์ง๋ง,
์ธ๋ฑ์ค์ ํฌ๊ธฐ๊ฐ ์ปค์ง ์ ์์ผ๋ฉฐ ์ ๋ฐ์ดํธ๊ฐ ๋น๋ฒํ๋ฉด ์ฑ๋ฅ์ด ์ ํ๋ฉ๋๋ค
์ ์ ์ธ ๋ฐ์ดํฐ๋ ์ฝ๊ธฐ ์์ฃผ ๋ฐ์ดํฐ ๋ฑ์ ์ ํฉํฉ๋๋ค
2. ์ ์ฅ ๋ฐฉ์ ๊ธฐ๋ฐ ์ธ๋ฑ์ค
์ ์ฅ ๋ฐฉ์ ๊ธฐ๋ฐ ์ธ๋ฑ์ค๋ ๊ตฌ์กฐ ๊ธฐ๋ฐ ์ธ๋ฑ์ค์๋ ๋ค๋ฅด๊ฒ ๋ฐ์ดํฐ๊ฐ ๋์คํฌ์ ์ ์ฅ๋๋ ๋ฐฉ์์ ๋ฐ๋ผ ์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ฑํฉ๋๋ค !
ํ๋ง๋๋ก ์ค๋ช ํ์๋ฉด, ๋ฐ์ดํฐ์ ๋ฌผ๋ฆฌ์ ๊ตฌ์ฑ์ ๋ฐ๋ผ ์ธ๋ฑ์ค๊ฐ ์ค๊ณ๋๋๋ฐ์
์ ์ฅ ๋ฐฉ์ ๊ธฐ๋ฐ ์ธ๋ฑ์ค๋ ํฌ๊ฒ ๋๊ฐ์ง๋ก ๋๋ฉ๋๋ค !!
- Clustered Index
- Non-Clusted Index
2-1. Clustered Index
๋ฐ์ดํฐ ์์ฒด๊ฐ ์ ๋ ฌ๋ ์ธ๋ฑ์ค์ ์์๋๋ก ๋์คํฌ์ ์ ์ฅ๋๋ ๋ฐฉ์์ ๋๋ค !!
์๋ฅผ ๋ค์ด ์ฑ ์์ "์ธ๋ฑ์ค" ๋ผ๋ ํค์๋๋ฅผ ์ฐพ๊ณ ์ ํ ๋ Clustered Index ๋ ํด๋น ํค์๋๊ฐ ์๋ ํ์ด์ง๋ฅผ ์๊ณ ์์ด์ ํด๋น ํ์ด์ง๋ฅผ ๋ฐ๋ก ํผ์น ์ ์์ต๋๋ค.
๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ๋ ฌ๋์ด ์๊ธฐ ๋๋ฌธ์ ๊ฒ์ ์ฑ๋ฅ์ด ๊ต์ฅํ ๋ฐ์ด๋ฉ๋๋ค.
ํนํ ๋ฒ์ ๊ฒ์์ ํ ๋ ๋์ฑ ์ ๋ฆฌํฉ๋๋ค.
๋ฐ์ดํฐ๋ฅผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ๋ ฌ๋ ํํ๋ก ์ ์ฅํ ๋๋ฌธ์ ํ๋์ ํ ์ด๋ธ์ ํ๋์ ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค๋ง ์กด์ฌ๊ฐ๋ฅํฉ๋๋ค !
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ณดํต PK ๋ฅผ ๊ธฐ์ค์ผ๋ก ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค๊ฐ ์๋ ์์ฑ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
2-2. Non-Clusted Index
Non-Clusted Index ๋ ๋ฐ์ดํฐ ์์ฒด๊ฐ ์ ๋ ฌ๋์ด ์ ์ฅ๋๋ Clustered Index ์๋ ๋ค๋ฅด๊ฒ
๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋์ง ์์ ์ํ์์ ๋ณ๋์ ์ธ๋ฑ์ค ํ ์ด๋ธ์ ๋๊ณ ๊ฒ์์ ํ๋ ๋ฐฉ์ ์ ๋๋ค
์๋ฅผ ๋ค์ด ์ฑ ์์ "์ธ๋ฑ์ค" ๋ผ๋ ํค์๋๋ฅผ ์ฐพ๊ณ ์ ํ๋ค๋ฉด ๋ชฉ์ฐจ์์ ํด๋น ํค์๋์ ์ฑ ํ์ด์ง๋ฅผ ์ฐพ๊ณ , ํ์ด์ง๋ฅผ ํผ์น ์ ์์ต๋๋ค
๋ฐ์ดํฐ๋ฅผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ๋ ฌํด์ ์ ์ฅํ์ง ์๊ธฐ ๋๋ฌธ์ ํ๋์ ํ ์ด๋ธ์ ์ฌ๋ฌ ๊ฐ์ ๋ ผํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค
2-3. Clustered Index vs Non-Clusted Index
Clustered Index | Non-Clustered Index | |
๋ฐ์ดํฐ ์ ๋ ฌ ๋ฐฉ์ | ๋์คํฌ์ ์ ๋ ฌ ์ ์ฅ | ์ ๋ ฌ๋์ง ์์ |
๊ฒ์ ์๋ | ๋น ๋ฆ (๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋์ด ์๊ธฐ ๋๋ฌธ) | ๋ค์ ๋๋ฆผ (๋ชฉ์ฐจ๋ฅผ ํตํด์ ์ฐพ์์ผํจ) |
์ฝ์ / ์ญ์ ์๋ | ๋๋ฆผ (๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ ๋ ฌ) | ๋น ๋ฆ (๋ชฉ์ฐจ์ ์ถ๊ฐ๋ง) |
ํ ์ด๋ธ ๋น ๊ฐ์ | 1๊ฐ๋ง ๊ฐ๋ฅ | n๊ฐ ๊ฐ๋ฅ |
ํ์ฉ | ์์ฃผ ๊ฒ์๋๋ ์ปฌ๋ผ ์ด๋ PK | ์์ฃผ ํํฐ๋ง ๋๋ ์ปฌ๋ผ |
'๐๏ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํธ๋์ญ์ ์ด๋ ? (0) | 2025.03.15 |
---|---|
Lock ์ด ์ ๋ฆฌ2 - ๋๊ด์ ๋ฝ, ๋น๊ด์ ๋ฝ, ๋ฐ๋๋ฝ, ๋ถ์ฐ๋ฝ (1) | 2025.02.28 |
Lock ์ด ์ ๋ฆฌ1 - ๊ธฐ๋ณธ์ ์ธ ๋ฝ ๊ฐ๋ & DB ๋ด๋ถ ๋ฝ ๊ตฌ์กฐ (0) | 2025.02.14 |
DB ์ธ๋ฑ์ค ๊ฐ๋ ์ ๋ฆฌ: ์ ์ฅ ๊ตฌ์กฐ, ์์ฑ ๊ณผ์ , ๋์ ์๋ฆฌ (1) | 2024.12.12 |