๋๋ค I/O์ ์์ฐจ I/O
๋๋ค I/O | ์์ฐจ I/O | |
์๋ฏธ | ๋ฐ์ดํฐ์ ์์๋ก ์ ๊ทผํ๋ ์
์ถ๋ ฅ ๋ฐฉ์ ๋์คํฌ ํค๋๋ฅผ ํน์ ์์น๋ก ์ง์ ์ด๋ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์ฐ๋ ๊ฒ |
๋ฐ์ดํฐ๋ฅผ ์ฐ์์ ์ธ ์์๋ก ์ ๊ทผํ๋ ์
์ถ๋ ฅ ๋ฐฉ์ ๋์คํฌ ํค๋๋ฅผ ํ ๋ฐฉํฅ์ผ๋ก ์์ง์ด๋ ๊ฒ |
์ธ์ ์ฌ์ฉํ๋๊ฐ | ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํน์ ๋ ์ฝ๋ ์กฐํ, ๊ฐฑ์ ๋๋ ์ญ์ | ์ ์ฒด ํ ์ด๋ธ์ ์ค์บํ๊ฑฐ๋ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ผ๊ด ์ฒ๋ฆฌํด์ผ ํ ๋ |
์ธ๋ฑ์ค(Index)
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํจ์จ์ ์ธ ๊ฒ์์ ์ํด ์ฌ์ฉ๋๋ ์๋ฃ๊ตฌ์กฐ
์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋นจ๋ฆฌ ์ฐพ๊ธฐ ์ํด ํฌํ์ ํค ๊ฐ์ ๋ํ ๋ฌผ๋ฆฌ์ ์์น๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
์ฃผ๋ก B-Tree ๋๋ B+Tree ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ฒ์ํฉ๋๋ค.
์ธ๋ฑ์ค์ ๋์ ๋ฐฉ์์ B-tree์ B+tree์ ๋ฐ๋ผ์ ๋ฌ๋ผ์ง๋๋ค.
์ฐ์ B-Tree์ ๋ํด ์ค๋ช ํ๊ฒ ์ต๋๋ค.
B-tree(Balanced Tree)
๊ท ํ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ์๋ฃ๊ตฌ์กฐ์ ๋๋ค.
๊ท ํ ํธ๋ฆฌ๋ ๋ชจ๋ ๋ฆฌํ๋ ธ๋๊ฐ ๊ฐ์ ๋ ๋ฒจ์ ์กด์ฌํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ต์๋จ ๋ฃจํธ ๋ ธ๋, ์ค๊ฐ์ ๋ธ๋์น ๋ ธ๋, ์ตํ์์ ๋ฆฌํ๋ ธ๋๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
์ธ๋ฑ์ค๋ ํญ์ ํค๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋์ด ์๊ณ ํน์ ์ ํธ๋ฆฌ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ์ฌ ๋น ๋ฅธ ๊ฒ์๊ณผ ํจ์จ์ ์ธ ๋ ์ฝ๋ ์ ๊ทผ์ด ๊ฐ๋ฅํฉ๋๋ค.
B-tree์ ๊ฒฝ์ฐ ๋ชจ๋ ๋ด๋ถ ๋ ธ๋์๋ ๋ฐ์ดํฐ ๊ฐ๊ณผ ๋ฐ์ดํฐ ํฌ์ธํฐ ๊ฐ์ ๊ฐ์ง๊ณ ์์ต๋๋ค
๋ํ ๋ธ๋์น ๋ ธ๋์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ๊ฐ ๊ธฐ์ค์ผ๋ก ํฌ๊ฑฐ๋ ์์ ๊ฐ์ ๊ฐ์ง ๋ค์ ๋ ๋ฒจ์ ํธ๋ฆฌ ํฌ์ธํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค
๊ฐ์ด ์ถ๊ฐ๋๊ฑฐ๋ ์ญ์ ๋ ๊ฒฝ์ฐ, ๋์ ์ผ๋ก ๋ ธ๋๋ฅผ ๋ถํ ํ๊ฑฐ๋ ํตํฉํ์ฌ ํญ์ ๊ท ํ ์ํ๋ฅผ ์ ์งํฉ๋๋ค.
B+tree
B-tree๋ฅผ ๋ณํํ ๊ฒ์ผ๋ก ๋ชจ๋ ๋ฐ์ดํฐ ํฌ์ธํฐ๋ ๋ฆฌํ๋ ธ๋๋ง ๊ฐ์ง๊ณ ์์ต๋๋ค
B+tree๋ ๋ฆฌํ๋ ธ๋๊ฐ ๋งํฌ๋ ๋ฆฌ์คํธ๋ก ์ด๋ฃจ์ด์ ธ ์๊ธฐ ๋๋ฌธ์ ๋ฒ์ ์ฟผ๋ฆฌ๋ ์์ฐจ์ ์ธ ํ์์ด ์ฉ์ดํฉ๋๋ค.
๋ํ ๋ฆฌํ ๋ ธ๋์๋ง ํค ๊ฐ์ด ์์ด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋ ํจ์จ์ ์ผ ์ ์์ต๋๋ค.
B+Tree์ ๋ฐ์ดํฐ ์ถ๊ฐ ๊ณผ์
B+Tree์ ๋ฐ์ดํฐ ์ญ์ ๊ณผ์
์ธ๋ฑ์ค ์ค์ ๊ธฐ์ค
1. ๋ฐ์ดํฐ์ ์์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
๋ฐ์ดํฐ์ ์์ด ๋ณ๋ก ์๊ฑฐ๋ ๋ฐ์ดํฐ ๊ฐ์ด ๋ช ์ข ๋ฅ ์๋๋ ๊ฒฝ์ฐ ์คํ๋ ค ์ธ๋ฑ์ค๊ฐ ์๋ ๊ฒ ๋ ๋น ๋ฅผ ์ ์์ต๋๋ค.
2. WHERE ์ ์ ์์ฃผ ์ฌ์ฉ๋๋ ์์ฑ์ด์ด์ผ ํฉ๋๋ค.
3. ๊ฒ์์ด ์์ฃผ ๋ฐ์ํ๋ ์ปฌ๋ผ์ด๋ ์กฐ์ธ ์กฐ๊ฑด์ ์ธ๋ฑ์ค๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค.
4. ๋จ์ผ ํ ์ด๋ธ์ ์ธ๋ฑ์ค๊ฐ ๋ง์ผ๋ฉด ์๋๊ฐ ๋๋ ค์ง ์ ์์ต๋๋ค(ํ ์ด๋ธ ๋น 4~5๊ฐ ์ ๋ ๊ถ์ฅ)
5. ์์ฑ์ด ๊ฐ๊ณต๋๋ ๊ฒฝ์ฐ ์ฌ์ฉํ์ง ์์ต๋๋ค.
6. ์์ฑ์ ์ ํ๋๊ฐ ๋ฎ์ ๋ ์ ๋ฆฌํฉ๋๋ค(์์ฑ์ ๋ชจ๋ ๊ฐ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ)
ํ์ง๋ง ์ธ๋ฑ์ค๋ฅผ ๋ง์ด ์ค์ ํ๋ฉด ์ฐ๊ธฐ ์ฐ์ฐ์ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ผ๋ฏ๋ก ์ ์ ํ ๊ท ํ์ ์ ์งํด์ผ ํฉ๋๋ค.
์ปค๋ฒ๋ง ์ธ๋ฑ์ค
์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ฅผ ์ธ๋ฑ์ค ์์ฒด์์ ๊ฐ์ ธ์ฌ ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ๋งํฉ๋๋ค.
๋ค์ค ์ปฌ๋ผ ์ธ๋ฑ์ค(Multi-column Index)
๋ ๊ฐ ์ด์์ ์ปฌ๋ผ์ ๋ํ ์ธ๋ฑ์ค์ ๋๋ค.
์ฌ๋ฌ ์กฐ๊ฑด์ ํจ๊ป ๊ณ ๋ คํด์ผ ํ ๋ ์ ์ฉํฉ๋๋ค.
Hash ์ธ๋ฑ์ค
ํด์ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํค์ ์ฐ๊ฒฐ๋ ๋ฒํท์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ธ๋ฑ์ค์ ๋๋ค.
์ฃผ๋ก ๋ฑ๊ฐ ๋น๊ต์์ ์ฌ์ฉ๋๋ฉฐ, ๋ฒ์ ๊ฒ์์๋ ์ ํฉํ์ง ์์ต๋๋ค.
ํด๋ฌ์คํฐ๋ง ์ธ๋ฑ์ค
ํ ์ด๋ธ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ฑ์ค์ ์์๋๋ก ์ ์ฅํ๋ ๋ฐฉ์์ผ๋ก, ์ธ๋ฑ์ค์ ์ค์ ๋ฐ์ดํฐ์ ๋ฌผ๋ฆฌ์ ์ธ ์์๊ฐ ์ผ์นํฉ๋๋ค.
ํด๋ฌ์คํฐ๋ง ์ธ๋ฑ์ค๋ ํ ์ด๋ธ๋น ํ๋๋ง ์์ฑํ ์ ์์ผ๋ฉฐ, ํค ๊ฐ์ ์ํ ๋๋ฑ ๋ฐ ๋ฒ์(BETWEEN) ๊ฒ์ ๋ชจ๋์ ์ ๋ฆฌํฉ๋๋ค.
ํ ์ด๋ธ ์์ฑ ์ PK๋ฅผ ์์ฑํ๋ฉด ์๋์ผ๋ก ์์ฑ๋ฉ๋๋ค.
์ธ๋ฑ์ค ์ค์บ ๋ฐฉ์
์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ๋ฐฉ์. ์ธ๋ฑ์ค์ ์ข ๋ฅ์ ๋ฐ๋ผ ๋ค์ํ ์ค์บ ๋ฐฉ์์ด ์์ต๋๋ค.
1. ์ธ๋ฑ์ค ์ ์ฒด ์ค์บ (Index Full Scan)
์ธ๋ฑ์ค์ ์ ์ฒด ๋ฒ์๋ฅผ ์ค์บํ๋ ๋ฐฉ์์ ๋๋ค.
์ฃผ๋ก ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ์ฟผ๋ฆฌ์์ ์ฌ์ฉ๋ฉ๋๋ค.
2. ์ธ๋ฑ์ค ๋ฒ์ ์ค์บ (Index Range Scan):
ํน์ ๋ฒ์์ ํค ๊ฐ์ ๊ฐ์ง ๋ ์ฝ๋๋ฅผ ์ธ๋ฑ์ค์์ ์ค์บํ๋ ๋ฐฉ์์ ๋๋ค.
์ฃผ๋ก BETWEEN, >, >=, <, <= ์ฐ์ฐ๊ณผ ๊ฐ์ ๋ฒ์ ์ฟผ๋ฆฌ์์ ์ฌ์ฉ๋ฉ๋๋ค.
3. ์ ๋ํฌ ์ธ๋ฑ์ค ์ค์บ (Unique Index Scan):
์ ์ผํ ๊ฐ์ ๊ฐ์ง๋ ๊ณ ์ ์ธ๋ฑ์ค๋ฅผ ํ์ฉํ์ฌ ์ค์บํ๋ ๋ฐฉ์์ ๋๋ค.
์ฃผ๋ก PRIMARY KEY ๋๋ UNIQUE ์ ์ฝ ์กฐ๊ฑด์ด ์๋ ์ปฌ๋ผ์ ๋ํ ์กฐํ์์ ์ฌ์ฉ๋ฉ๋๋ค.
4. ๋ฃจ์ค ์ค์บ (Loose Index Scan):
์ธ๋ฑ์ค์ ์ผ๋ถ๋ง์ ์ค์บํ๋ ๋ฐฉ์์ ๋๋ค.
์ฆ, ๋ชจ๋ ๋ ์ฝ๋๋ฅผ ์์ฐจ์ ์ผ๋ก ์ ๊ทผํ๋ฉด์ ์ผ์นํ๋์ง ํ์ธํฉ๋๋ค.
5. ๋ณํฉ ์ค์บ (Merge Scan):
๋ ๊ฐ ์ด์์ ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํ์ฌ ์ฌ๋ฌ ๊ฐ์ ์ธ๋ฑ์ค ์ค์บ์ ๋ณํฉํ๋ ๋ฐฉ์์ ๋๋ค.
์ฌ๋ฌ ์ธ๋ฑ์ค ๊ฐ์ ๋ณํฉ์ ํตํด ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ์ป์ต๋๋ค.
์ฟผ๋ฆฌ ์คํ ๊ณํ
๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง์ด ์ฟผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ ํํ ์ต์ ์ ์คํ ๋ฐฉ๋ฒ์ ๋๋ค.
์ด๋ฅผ ํ์ธํ ์ ์๋ ๋๊ตฌ๊ฐ ์์ผ๋ฉฐ, ๋ํ์ ์ผ๋ก EXPLAIN๋ฌธ์ ์ฌ์ฉํฉ๋๋ค.
ํํธ
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ตํฐ๋ง์ด์ ์๊ฒ ํน์ ์คํ ๊ณํ์ ์ฌ์ฉํ๋๋ก ์๋ ค์ฃผ๋ ๋ช ๋ น์ด ๋๋ ์ฃผ์์ ๋๋ค.
์ธ๋ฑ์ค ์ฌ์ฉ ํ์ธ
EXPLAIN๋ฌธ์ ์ฌ์ฉํ์ฌ ์ฟผ๋ฆฌ์ ์คํ ๊ณํ์ ํ์ธํ๊ณ , ์ธ๋ฑ์ค๊ฐ ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง ํ์ ํ ์ ์์ต๋๋ค.
์ธ๋ฑ์ค ์ฌ์ฉ ์ฃผ์์
์ธ๋ฑ์ค๋ฅผ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๋ฉด ์ฐ๊ธฐ ์ฐ์ฐ์ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ผ๋ฏ๋ก, ์ ์คํ๊ฒ ํ์ํ ๊ณณ์๋ง ์ธ๋ฑ์ค๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค.
GROUP BY ์ธ๋ฑ์ค
GROUP BY๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, GROUP BY์ ์ฌ์ฉ๋ ์ปฌ๋ผ๋ค์ ์ธ๋ฑ์ค๋ฅผ ์ค์ ํ๋ฉด ์ง๊ณ ํจ์๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์ด๋ฆ, ๊ตญ๊ฐ, ์ฑ๋ณ ํ
์ด๋ธ์ ์ธ๋ฑ์ค ์ค์
์ด๋ฆ, ๊ตญ๊ฐ, ์ฑ๋ณ์ด ์๋ ํ ์ด๋ธ์์๋ ์์ฃผ ๊ฒ์๋๋ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ธ๋ฑ์ค๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค.
๊ฒ์์ด ์์ฃผ ๋ฐ์ํ๋ ๊ฒฝ์ฐ, ํด๋น ์ปฌ๋ผ๋ค์ ์ธ๋ฑ์ค๋ฅผ ์ค์ ํ๋ฉด ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๋ํ ์์ฑ์ ์ ํ๋๊ฐ ๋ฎ์ ์๋ก ์ ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ด ๋จ,์ฌ 2๊ฐ์ง์ธ ์ฑ๋ณ ์์ฑ์ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค๊ธฐ์ ์ ํฉํ์ง ์์ ์ ์๋ค.
์ฐธ๊ณ
Fundamentals of Database Systems
MySQL๋ก ๋ฐฐ์ฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ๋ก ๊ณผ ์ค์ต
https://dncjf64.tistory.com/436
'๐ ๋ฐ์ดํฐ๋ฒ ์ด์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
DB์คํฐ๋ ํ๊ณ (0) | 2024.02.13 |
---|---|
๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํฐ๋ 4์ฃผ์ฐจ (0) | 2024.01.29 |
๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํฐ๋ 2์ฃผ์ฐจ (0) | 2024.01.18 |
๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํฐ๋ 1์ฃผ์ฐจ (1) | 2024.01.10 |