1. ์ธ๋ฑ์ค ๊ธฐ๋ณธ ์๋ฆฌ
1.1 ์ธ๋ฑ์ค ๊ตฌ์กฐ
์ธ๋ฑ์ค๋ ๊ฒ์ ์๋๋ฅผ ํฅ์์ํค๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์
๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ฑ
์์ ์ด๋ค ๋ด์ฉ์ ์ฐพ๊ณ ์ถ์ ๋ ์ฑ
๋ค์ ์ค๋ฆฐ ์์ธ(๋จ์ด + ํ์ด์ง)์ ์ด์ฉํ๊ฒ ๋ฉ๋๋ค.
์ฐธ๊ณ ๋ก ์ฑ
์ ๋ด์ฉ์ ์์๋๋ก ํ์ํ ๋ชฉ์ฐจ์ ์์ธ์ ๋ค๋ฅธ ๊ฐ๋
์
๋๋ค.
์ธ๋ฑ์ค๋ ๋จ์ด + ํ์ด์ง๋ก ๊ตฌ์ฑ๋ ์์ธ์ฒ๋ผ KEY + ROWID ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ ์ ๋ ฌ๋์ด ์๋ ๊ตฌ์กฐ์
๋๋ค.
(ํ
์ด๋ธ ๋ฐ์ดํฐ๋ Free Block์ ๋ค์ด๊ฐ๋ฏ๋ก ์ ๋ ฌ ์ํ๊ฐ ์ ์ง๋์ง ์์ต๋๋ค.)
๐ AAAR5KAAFAAAADNAAX
ย ย ย ย Data-ObjFileBlockRow
ย ย ย ย DBA(Data Block Address) Location
ROWID๋ ๋ฌผ๋ฆฌ์ ์ธ ์ฃผ์๋ก ํ ์ด๋ธ ๋ธ๋ก์ ์ ๊ทผํ๋ ์ข์ ์๋จ์ด ๋ฉ๋๋ค.
์๋ ํ๋ฅผ ๋ณด์๋ฉด ๋ฐ์ดํฐ ๊ฑด์๋ ๋์ผํ์ง๋ง ํ๊ท Row ์ฉ๋ ๋ฐ ํ
์ด๋ธ ์ฉ๋, ๋ธ๋ก ์์์ ๋ง์ ์ฐจ์ด๋ฅผ ๋ณด์ด๊ณ ์์ต๋๋ค.
ํ
์ด๋ธ๊ณผ ๋น๊ตํ์ ๋ ์ธ๋ฑ์ค๋ Key + RowID ๋ง์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ํ๋์ ๋ธ๋ก(8K)์ ๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ์ ์์ต๋๋ค.
ย | ํ ์ด๋ธ | ์ธ๋ฑ์ค(Leaf Node) |
---|---|---|
๋ฐ์ดํฐ ๊ฑด์ | 10์ต๊ฑด | 10์ต๊ฑด |
ํ๊ท Row ์ฉ๋ | 1,024 | 25 |
ํ ์ด๋ธ ์ฉ๋ | 1TB | 25GB |
๋ธ๋ก ์ | 1์ต | 3๋ฐฑ๋ง |
์ธ๋ฑ์ค๋ B*Tree(Root - Branch - Leaf) ๊ตฌ์กฐ๋ก ์ค๊ณ๋์ด ์์ด ๋น๊ต์ ์ ์ ํ์(์์ง์ ํ์ - ์ํ์ ์ค์บ - ํ ์ด๋ธ ๋๋ค ์์ธ์ค)์ผ๋ก ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค.
๋๋์ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์กฐํํ ์ ์๋๋ก ํ๋ ์ธ๋ฑ์ค์๋ ์์ต๋ถ๊ธฐ์ (10%)์ด ์กด์ฌํฉ๋๋ค.
์ฝ์ด์ผ ํ๋ ๋ฐ์ดํฐ์ ์์ด ์ผ์ ์์ค์ ๋์ด์๋ ์๊ฐ ํ
์ด๋ธ ์ ์ฒด๋ฅผ ์ค์บํ๋ ๊ฒ๋ณด๋ค ๋๋ ค์ง๋๋ค.
(์ง๊ธ์ ๋จ์ํ๊ฒ ๊ณ์ฐํ์ง๋ง ์ค์ ๋ก๋ ์์ผ๋ก ๋ฐฐ์ฐ๊ฒ ๋ Clustering Factor๋ฅผ ํจ๊ป ๊ณ ๋ คํด์ผ ํจ)
๋ฐ์ดํฐ์ ์ | Table Full Scan | Index Range Scan | |||
---|---|---|---|---|---|
์์ง์ ํ์ | ์ํ์ ์ค์บ | ํ ์ด๋ธ R.A | ํฉ๊ณ | ||
10 | 100,000,000 | 3 | 1 | 10 | 14 |
100,000,000 | 100,000,000 | 3 | 300,000 | 100,000,000 | 100,300,003 |
โญ๏ธโญ๏ธโญ๏ธ ์ธ๋ฑ์ค ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅ ํ๊ฑฐ๋ Index Range Scan์ด ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ
- ์ธ๋ฑ์ค ์ ๋ ์ปฌ๋ผ์ ๊ฐ๊ณต (
WHERE SUBSTR(C1, 3) = '930426โ
) - NULL ๊ฒ์ (
WHERE C1 IS NULL
, ์ธ๋ฑ์ค ๊ตฌ์ฑ ์ปฌ๋ผ ์ค ํ๋๋ผ๋ NULL์ด ์๋๋ผ๋ฉด ์ฌ์ฉ ๊ฐ๋ฅ) - ๋ฌต์์ ํ๋ณํ (
WHERE C1 = 10
, C1 ์ปฌ๋ผ์ CHAR ํ์ , ๋จ LIKE๋ ์ซ์ โ ๋ฌธ์) - ๋ถ์ ๊ฒ์ (
WHERE C1 <> 10
)
1.2 ๋ค์ํ ์ธ๋ฑ์ค ์ค์บ ๋ฐฉ์
- Index Range Scan
BTree ์ธ๋ฑ์ค์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ํํ์ ํ์ ํ๋ฆ์
๋๋ค.
๋ฃจํธ์์ ๋ฆฌํ๊น์ง ์์ง์ ํ์์ ํ๊ณ ํ์ํ ๋ฒ์๊น์ง ์ํ์ ์ค์บ์ ํ๋ ๋ฐฉ์์
๋๋ค.
ํญ์ ๋น ๋ฅธ ์๋๋ฅผ ๋ณด์ฅํ์ง ์์ผ๋ฉฐ, ์ํ์ ์ค์บ ๋ฒ์์ Table Random Access๋ฅผ ํ์๋ฅผ ์ค์ฌ ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
Index๋ฅผ Range Scan ํ๋ ค๋ฉด, ์ธ๋ฑ์ค๋ฅผ ๊ตฌ์ฑํ๋ ์ ๋ ์ปฌ๋ผ์ ๊ฐ๊ณตํ์ง ์์ ์ํ๋ก ์กฐ๊ฑด์ ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
Index Range Scan์ ์ ๋ํ๋ ํํธ๋ ์์ผ๋ฉฐ *index ํํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- Index Full Scan
Index Full Scan์ ์์ง์ ํ์ ์์ด Leaf ๋ธ๋ก์ ์ฒ์๋ถํฐ ๋๊น์ง ํ์(์ํ์ ์ค์บ)ํฉ๋๋ค.
์กฐ๊ฑด์ ์ ์ธ๋ฑ์ค ๊ตฌ์ฑ ์ปฌ๋ผ์ ์์ผ๋ ์ ๋ ์ปฌ๋ผ์ด ์๋ ๊ฒฝ์ฐ ์ตํฐ๋ง์ด์ ์ ํ๋จ์ ๋ฐ๋ผ Full Scanํ๊ฒ ๋ฉ๋๋ค.
์ตํฐ๋ง์ด์ ๋ ์ธ๋ฑ์ค ์ ๋ ์ปฌ๋ผ์ด ์กฐ๊ฑด์ ์ ์๋ค๋ฉด Table Full Scan์ ๊ณ ๋ คํฉ๋๋ค.
ํ
์ด๋ธ ์ฉ๋์ด ์ปค ๋ถ๋ด์ด ํด ๊ฒฝ์ฐ ์ธ๋ฑ์ค๋ฅผ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํ๊ฒ ๋ฉ๋๋ค.
์ต์ข
๊ฒฐ๊ณผ ๊ฐ์ด ์ ์ ๊ฒฝ์ฐ Index Full Scan์ด ํจ์จ์ ์
๋๋ค.
์ต์ข
๊ฒฐ๊ณผ ๊ฐ์ด ๋ง์ ๊ฒฝ์ฐ Table Full Scan์ด ํจ์จ์ ์
๋๋ค.
Index Full Scan์ ์ ๋ํ๋ ํํธ๋ ์์ผ๋ฉฐ index ํํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- Index Unique Scan
Index Unique Scan์ ์์ง์ ํ์์ผ๋ก๋ง ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ต๋๋ค.
Unique ์ธ๋ฑ์ค๋ฅผ equal(โ=โ) ์กฐ๊ฑด์ผ๋ก ๊ฒ์ํด์ผ ํฉ๋๋ค.
์ ์ผํ ๊ฐ์ ๊ฐ์ง ์ธ๋ฑ์ค๋ฅผ ๊ฒ์ํ ๋ ์ฌ์ฉ๋๋ฉฐ, ๋ฒ์ ์กฐ๊ฑด์๋ ์ ํฉํ์ง ์์ต๋๋ค.
๋ฒ์ ์กฐ๊ฑด(BETWEEN, >, <, LIKE)์ผ๋ก ๊ฒ์ํ ๊ฒฝ์ฐ Index Range Scan์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
Index Unique Scan์ ์ ๋ํ๋ ํํธ๋ ์์ผ๋ฉฐ index ํํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- Index Skip Scan
Index Skip Scan์ ์กฐ๊ฑด์ ์ ๋น ์ง ์ธ๋ฑ์ค ์ ๋ ์ปฌ๋ผ์ Distinct๊ฐ ๋ฎ๊ณ ํํ ์ปฌ๋ผ์ Distinct๊ฐ ๋์ ๋ ์ ์ฉํ Scan ๋ฐฉ์์
๋๋ค.
์ธ๋ฑ์ค ์ ํ ์ปฌ๋ผ์ ์กฐํ ์กฐ๊ฑด์ด BETWEEN, LIKE, ๋ถ๋ฑํธ ์ผ ๋๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Index Skip Scan์ Leaf ๋
ธ๋๋ฅผ ์ค์บํ๋ค๊ฐ Skip์ด ํ์ํ ๊ฒฝ์ฐ Root๋ก ๋ค์ ์ฌ๋ผ๊ฐ ํ์ํ์ง ์์ต๋๋ค. ์ผ์ Branch ๋
ธ๋๊น์ง ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ค๊ฐ ์ค์บ์ด ํ์ํ Leaf ๋
ธ๋๊น์ง ๋ด๋ ค์ค๋ ๋ฐฉ์์ผ๋ก ๋์ํฉ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ CR(Consistent Mode Block Read)๋ก ์กํ์ง ์์ต๋๋ค.
index_ss ํํธ๋ฅผ ์ฌ์ฉํ์ฌ Index Skip Scan์ ์ ๋ํ๋ฉฐ no_index_ss ํํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฉ์งํฉ๋๋ค.
- Index Fast Full Scan
Index Fast Full Scan์ Index Full Scan๋ณด๋ค ๋น ๋ฅธ ๋ฐฉ์์
๋๋ค.
๊ทธ ์ด์ ๋ ๋
ผ๋ฆฌ์ ์ธ ์ธ๋ฑ์ค ํธ๋ฆฌ ๊ตฌ๋ก๋ฅผ ๋ฐ๋ฅด์ง ์๊ณ ์ธ๋ฑ์ค ์ธ๊ทธ๋จผํธ ์ ์ฒด๋ฅผ Multi-Block I/O ๋ฐฉ์์ผ๋ก ์ค์บํ๊ธฐ ๋๋ฌธ์
๋๋ค.
db_file_multiblock_read_count ํ๋ผ๋ฏธํฐ ์ง์ ๊ฐ ๋งํผ ํ ๋ฒ์ ์ฝ์ด๋ค์
๋๋ค. (extent ํฌ๊ธฐ ์ด๊ณผ โ)
๋๊ฒ OS์ I/O ๋จ์๋ 1MB์
๋๋ค. 8k ๋ธ๋ก 128๊ฐ๊ฐ ๋ชจ์ด๋ฉด 1MB๊ฐ ๋ฉ๋๋ค. ์ด๋ฌํ ์ด์ ๋ก ํ๋ผ๋ฏธํฐ ๊ฐ์ 128๋ก ์ง์ ํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์
๋๋ค.
๋ฆฌํ ๋
ธ๋์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ๋ฌด์ํ๊ณ ์ฝ๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ณผ ์งํฉ์ด ์ธ๋ฑ์ค ํค ์์๋๋ก ์ ๋ ฌ(X)๋์ง ์์ต๋๋ค.
์ฟผ๋ฆฌ์ ์ฌ์ฉํ ์ปฌ๋ผ์ด ๋ชจ๋ ์ธ๋ฑ์ค์ ํฌํจ๋์ด ์์ด์ผ ํฉ๋๋ค.
index_ffsํํธ๋ฅผ ์ฌ์ฉํ์ฌ Index Fast Full Scan์ ์ ๋ํ ์ ์์ต๋๋ค.
- Index Range Scan Descending
์ธ๋ฑ์ค ์ฌ์ฉ์ ์ ์ฝ์ฌํญ
์ถํ ์ ๋ฐ์ดํธ
์ธ๋ฑ์ค ์ฌ์ฉ์ ์ฅ๋จ์
์ถํ ์ ๋ฐ์ดํธ