1. ์ธ๋ฑ์ค ๊ฐ์
- ๋ฐ์ดํฐ์ ๋ํ ๋ ผ๋ฆฌ์ ํฌ์ธํฐ์ ์งํฉ์ผ๋ก ์ฑ ์ ์ฐพ์๋ณด๊ธฐ์ ๊ฐ์ ์ญํ
- ํ ์ด๋ธ ๋ก์ฐ์ ํน์ ๊ฐ(ROWID)๊ณผ ํน์ ์ปฌ๋ผ์ ์ ๋ ฌ๋ ๊ฐ์ ๊ฒฐํฉํ์ฌ ๊ตฌ์กฐํ
- ์ง์๋ฌธ์ ๋น ๋ฅธ ์ํ๊ณผ ์ปฌ๋ผ๊ฐ์ ์ ์ผ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด์ ์ฌ์ฉ
* ์ธ๋ฑ์ค์ ํ์์ฑ
- ํ ์ด๋ธ ๋ก์ฐ๋ ๋ฐ์ดํฐ ํ์ผ ๋ธ๋ก์ ๋น ๊ณต๊ฐ์ ์ ์ฅ๋จ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ฐ ํ ์ด๋ธ์ ๋ชจ๋ ํ์ด์ง์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ ์ํ๋ ๋ก์ฐ๋ฅผ ์ฐพ์์ผํจ
- ์์ ํฌ๊ธฐ์ ํ ์ด๋ธ์ ์์ด๋ ๋ฌด๊ด
- ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์ ๊ทผ ์๋๊ฐ ๋นจ๋ผ์ง
* ์ธ๋ฑ์ค์ ์ฅ๋จ์
์ฅ์ | ๋จ์ | |
๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์๋ผ ์ ์์ | ์ธ๋ฑ์ค ์์ฒด๊ฐ ์ถ๊ฐ ๊ณต๊ฐ์ ์ฐจ์งํ๊ณ , ์ธ๋ฑ์ค๋ฅผ ์ ์ง ๊ด๋ฆฌํ๋๋ฐ ์ถ๊ฐ์ ์ธ ์๊ฐ ์๋น |
|
์ ์ผ ์ธ๋ฑ์ค๋ก ๋ง๋ค๋ฉด UNIQUE ์ ์ฝ ์กฐ๊ฑด๋ ๊ฐํํ ์ ์์ | ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํด์ ๊ฒ์ํ ๋๋ ์๊ฐ์ด ์ค์ด๋ค์ง๋ง, ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ ์์ ์์๋ ์๊ฐ์ด ๋ ๊ฑธ๋ฆผ |
* ์ธ๋ฑ์ค ์์ฑ ๊ธฐ์ค
- ์์ฑ O
- SQL๋ฌธ์์ ์ปฌ๋ผ์ด WHERE์ ๋๋ JOIN ์กฐ๊ฑด์์ ์์ฃผ ์ฌ์ฉ๋ ๋
- ์ปฌ๋ผ์ ๊ด๋ฒ์ํ ๊ฐ์ด ํฌํจ๋ ๋(๋ฒ์ ๊ฒ์)
- ์ปฌ๋ผ์ ๋ง์ ์์ NULL ๊ฐ์ด ํฌํจ๋ ๋
- ๋ํ ํ ์ด๋ธ์ด๊ณ ๋๋ถ๋ถ์ ์ง์๊ฐ 10~15% ์ดํ๋ก ๋ก์ฐ๋ฅผ ์ฝ์ด๋ค์ผ ๊ฒ์ผ๋ก ์์ํ ๋
- ์์ฑ X
- ํ ์ด๋ธ์ ์๋ฃ์ ์์ด ์ ์ ๋
- ์ปฌ๋ผ์ด WHERE ์กฐ๊ฑด์ผ๋ก ์์ฃผ ์ฌ์ฉ๋์ง ์์ ๋
- ์ง์ ๋๋ถ๋ถ์ด 10~15% ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ฌ ๊ฒ์ผ๋ก ์์๋ ๋
- ํ ์ด๋ธ์ ๋น๋ฒํ๊ฒ ์ฝ์ , ์์ , ์ญ์ ๊ฐ ์ผ์ด๋ ๋
* ์ธ๋ฑ์ค์ ์ข ๋ฅ
(๋ ผ๋ฆฌ์ ๋ถ๋ฅ)
- ๋จ์ผ ์ปฌ๋ผ ์ธ๋ฑ์ค : ํ๋์ ์ปฌ๋ผ์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ฑ
- ๋ณตํฉ ์ธ๋ฑ์ค : ๋ ๊ฐ ์ด์์ ์ปฌ๋ผ์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ฑ (32๊ฐ๊น์ง ๊ฐ๋ฅ)
- ์ ์ผ ์ธ๋ฑ์ค : ์ค๋ณต๋ ๊ฐ์ด ์กด์ฌํ์ง ์๋ ์ธ๋ฑ์ค
- ๋น์ ์ผ ์ธ๋ฑ์ค : ์ค๋ณต๋ ๊ฐ์ด ํ์ฉ๋๋ ์ธ๋ฑ์ค
- ํจ์ ๊ธฐ๋ฐ ์ธ๋ฑ์ค : ํจ์๋ ํํ์์ผ๋ก ์ปฌ๋ผ ๊ฐ์ ๊ณ์ฐํ์ฌ ์ธ๋ฑ์ค์ ์ ์ฅ
(๋ฌผ๋ฆฌ์ ๋ถ๋ฅ)
- ์ญ๋ฐฉํฅ ์ธ๋ฑ์ค
- B-Tree ์ธ๋ฑ์ค์์ ์ปฌ๋ผ์ ๊ฐ์ ๋ค์ง์ด์ ๋ฐฐ์ด
- ์ฐ์๋ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ ์ด์ ์ ๋ฐ์ดํฐ๋ฅผ ์ง์ฐ๋ฉด, ํ์ชฝ์ผ๋ก ์น์ฐ์น๋ ํ์์ด ๋ฐ์ํ๊ณ ๊ท ํ์ด ๊นจ์ง๋ ๊ฒ์ ๋ฐฉ์ง
- ๋นํธ๋งต ์ธ๋ฑ์ค : ์ธ๋ฑ์ค์ ์ ์ฅ๋ ์ปฌ๋ผ์ ๊ฐ์ ๋ฐ์ด๋๋ฆฌ๋ก ์ ์ฅ
- ๋นํธ๋งต-์กฐ์ธ ์ธ๋ฑ์ค
- ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ ๋นํธ๋งต ์ธ๋ฑ์ค์ ๋์ผ
- ๋ ๊ฐ ์ด์์ ํ ์ด๋ธ ์กฐ์ธ ๊ฒฐ๊ณผ์ ๋ํด ์ ์๋์ด ์์ฑ๋ ์ธ๋ฑ์ค
- ์ ์ผ ์ธ๋ฑ์ค : ์ค๋ณต๋ ๊ฐ์ด ์กด์ฌํ์ง ์๋ ์ธ๋ฑ์ค
2. ์ธ๋ฑ์ค ๊ตฌ์กฐ์ ์๋์๋ฆฌ
* B-Tree (Balanced Tree, ๊ท ํํธ๋ฆฌ)
- ๊ท ํํธ๋ฆฌ๋ ์์ชฝ ๋ ธ๋์ ๋์ด ์ฐจ๊ฐ 1 ์ดํ์ธ ํธ๋ฆฌ๋ก ์ํ๋ ๊ฐ์ ์ฐพ๊ณ ์ ํ ๋, ์ผ์ ํ ์ฑ๋ฅ์ ๋ณด์ฅ
- ๋๋ถ๋ถ์ DBMS๋ B-Tree ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ๋ฑ์ค๋ฅผ ํํ
- ๋ฐ์ดํฐ์ ๊ฒ์(SELECT)์์ ๋ฐ์ด๋ ์ฑ๋ฅ
- ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ(INSERT, UPDATE, DELETE)์์ ์ฑ๋ฅ ์ ํ
* ์ธ๋ฑ์ค ๊ตฌ์ฑ
- ๋ฆฌํ ๋ธ๋ก์ ํญ์ ์ธ๋ฑ์ค ํค(Key) ๊ฐ ์์ผ๋ก ์ ๋ ฌ๋์ด ์๊ธฐ ๋๋ฌธ์, ๋ฒ์ ์ค์บ(Range Scan, ๊ฒ์ ์กฐ๊ฑด์ ํด๋นํ๋ ๋ฒ์๋ง ์ฝ๋ค๊ฐ ๋ฉ์ถ๋ ๊ฒ)์ด ๊ฐ๋ฅ
- ์ ๋ฐฉํฅ๊ณผ ์ญ๋ฐฉํฅ ์ค์บ์ด ๋ ๋ค ๊ฐ๋ฅํ๋๋ก ์๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Double linked list) ๊ตฌ์กฐ๋ก ์ฐ๊ฒฐ๋จ
* ์ธ๋ฑ์ค ์ค์บ (Index Scan)
- Index Range Scan
- ์ธ๋ฑ์ค ๋ฃจํธ ๋ธ๋ก์์ ๋ฆฌํ ๋ธ๋ก๊น์ง ์์ง์ ์ผ๋ก ํ์ํ ํ, ๋ฆฌํ ๋ธ๋ก์ ํ์ํ ๋ฒ์(Range)๋ง ์ค์บํ๋ ๋ฐฉ์
- B-Tree ์ธ๋ฑ์ค์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ด๊ณ ์ ์์ ์ธ ํํ์ ์ก์ธ์ค ๋ฐฉ์
- Index Unique Scan
- ์์ง์ ํ์๋ง์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ์ค์บ ๋ฐฉ์์ผ๋ก์, Unique ์ธ๋ฑ์ค๋ฅผ '=' ์กฐ๊ฑด์ผ๋ก ํ์ํ๋ ๊ฒฝ์ฐ์ ์๋
- ์ผ์นํ๋ ๊ฐ์ ์ฐพ์ ๊ฒฝ์ฐ ๋ฐ๋ก ๋ฉ์ถค
- Index Full Scan
- ์์ง์ ํ์์์ด ์ธ๋ฑ์ค ๋ฆฌํ ๋ธ๋ก์ ์ฒ์๋ถํฐ ๋๊น์ง ์ํ์ ์ผ๋ก ํ์ํ๋ ๋ฐฉ์
- ๋๊ฐ๋ ๋ฐ์ดํฐ ๊ฒ์์ ์ํ ์ต์ ์ ์ธ๋ฑ์ค๊ฐ ์์ ๋ ์ฐจ์ ์ผ๋ก ์ ํ
- ์ธ๋ฑ์ค ์ ๋ ์ปฌ๋ผ์ด ์กฐ๊ฑด์ ์ ์์ผ๋ฉด ์ฐ์ ์ ์ผ๋ก Table Full Scan์ ๊ณ ๋ ค (๋์ฉ๋ ํ ์ด๋ธ X)
- ์ธ๋ฑ์ค๋ง์ผ๋ก ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ ๊ฒฝ์ฐ์ ํ์ฉ
- ORDER BY์ ์ ์ปฌ๋ผ์ผ๋ก ์ธ๋ฑ์ค๊ฐ ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ
- GROUP BY์ ์ ์ปฌ๋ผ์ผ๋ก ์ธ๋ฑ์ค๊ฐ ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ
- ์ธ๋ฑ์ค ์ค์บ ๋จ๊ณ์์ ๋๋ถ๋ถ์ ๋ก์ฐ๋ฅผ ํํฐ๋งํ๊ณ , ์ผ๋ถ์ ๋ํด์๋ง ํ ์ด๋ธ ์ก์ธ์คํ๋ ๊ฒ์ด ํจ์จ์ ์ด๋ผ๊ณ ํ๋จ๋ ๋
- Index Skip Scan
- ๋ฃจํธ ๋๋ ๋ธ๋์น ๋ธ๋ก์์ ์ฝ์ ์นผ๋ผ ๊ฐ ์ ๋ณด๋ฅผ ์ด์ฉํด, ์กฐ๊ฑด์ ๋ถํฉํ๋ ๋ ์ฝ๋๋ฅผ ํฌํจํ '๊ฐ๋ฅ์ฑ์ด ์๋' ํ์ ๋ธ๋ก๋ง ๊ณจ๋ผ์ ์ก์ธ์คํ๋ ๋ฐฉ์
- ์กฐ๊ฑด์ ์ ๋น ์ง ์ธ๋ฑ์ค ์ ๋ ์นผ๋ผ์ Distinct Value ๊ฐ์๊ฐ ์ ๊ณ , ํํ ์นผ๋ผ์ Distinct Value ๊ฐ์๊ฐ ๋ง์ ๋
- Index Fast Full Scan : ์ธ๋ฑ์ค ํธ๋ฆฌ๊ตฌ์กฐ๋ฅผ ๋ฌด์ํ๊ณ , ์ธ๋ฑ์ค ์ธ๊ทธ๋จผํธ ์ ์ฒด๋ฅผ ๋ฉํฐ๋ธ๋ก ์ฝ๊ธฐ ๋ฐฉ์์ผ๋ก ์ค์บ
Index Full Scan | Index Fast Full Scan | |
- ์ธ๋ฑ์ค ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ผ ์ค์บ | - ์ธ๊ทธ๋จผํธ(์ธ๋ฑ์ค) ์ ์ฒด๋ฅผ ์ค์บ | |
- ๊ฒฐ๊ณผ์งํฉ ์์ ๋ณด์ฅ | - ๊ฒฐ๊ณผ์งํฉ ์์ ๋ณด์ฅ X | |
- Single Block I/O | - Multiblock I/O | |
- ๋ณ๋ ฌ์ค์บ ๋ถ๊ฐ | - ๋ณ๋ ฌ์ค์บ ๊ฐ๋ฅ | |
- ์ธ๋ฑ์ค์ ํฌํจ๋์ด ์์ง ์์ ์ปฌ๋ผ ์กฐํ ์์๋ ์ฌ์ฉ ๊ฐ๋ฅ |
- ์ธ๋ฑ์ค์ ํฌํจ๋ ์ปฌ๋ผ์ผ๋ก๋ง ์กฐํํ ๋, ์ฌ์ฉ ๊ฐ๋ฅ |
'software engineering > ๋ฐ์ดํฐ๋ฒ ์ด์ค์ค๊ณ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DB] ํธ๋์ญ์ (Transaction) (0) | 2023.10.27 |
---|---|
[DB] ์ธ๋ฑ์ค ์ ์ (0) | 2023.10.12 |
[DB] ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ (0) | 2023.10.07 |
[DB] ์์ญ ๋ฌด๊ฒฐ์ฑ (0) | 2023.10.07 |
[DB] ๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ (1) | 2023.10.07 |