2023. 12. 9. 18:58ใDatabase/DB ์คํฐ๋
์ผ๋ฐ์ ์ผ๋ก Index Scan์ด๋ผ๊ณ ๋ถ๋ฆฌ์ฐ๋ ๊ธฐ๋ฒ๋ค(Index Range Scan, Index Unique Scan ๋ฑ)์ Single Block IO๋ฅผ ํ์ฉํ๋ค. (ํด๋น ๋ด์ฉ์ ๋ํ ์ดํด๋๊ฐ ๋ถ์กฑํ๋ค๋ฉด ์ด์ ๊ธ ์ฐธ์กฐ -> ํ ์ด๋ธ ์ค์บ ๋ฐฉ์์ ๋ฐ๋ฅธ DB Block IO ์ ๋ต)
๋ค์ ์ค๋ช ํ๊ฒ ์ง๋ง, ์ฝ์ด์ผ ํ ๋ธ๋ก์ด ๋ฒํผ์ ์กด์ฌํ๋ค๊ณ ํด๋ ํด๋น ๋ธ๋ก์ ์ ๊ทผํ๊ธฐ ์ํ ๋ฉ๋ชจ๋ฆฌ ์์ ํฌ์ธํฐ๋ฅผ ํ๋ํ๋ ๊ณผ์ ์ด ํ์ํ๋ค.
๋ฐ๋ผ์ ์ฝ์ด์ผ ํ ์ธ๋ฑ์ค ๋ ์ฝ๋๊ฐ ๋ง์ ๊ฒฝ์ฐ์, ๊ทธ ์ ๋งํผ ๋ ผ๋ฆฌ์ IO๊ฐ ๋ฐ์ํ๋ค๊ณ ๋ณผ ์ ์๊ณ ๋งค๋ฒ ํฌ์ธํฐ๋ฅผ ์๋กญ๊ฒ ํ๋ํ๋ค๊ณ ์๊ฐํ ์ ์๋ค.
๋ง์ฝ ์ธ๋ฑ์ค ๋ฆฌํ ๋ ธ๋์์ ์ฝ์ด๋ธ ํ ์ด๋ธ ROWID๊ฐ ๋๋ถ๋ถ ๋์ผํ ๋ธ๋ก์ ๊ฐ๋ฆฌํค๊ณ ์๋ค๋ฉด? ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์ธ๋ฑ์ค ๋ ์ฝ๋ ์ ๋งํผ ํฌ์ธํฐ ํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ ๊ฒ์ผ๋ก ๋ด์ผํ ๊น?
Buffer ๋ด ํน์ ๋ธ๋ก์ ์ฃผ์ ํ๋ ๊ณผ์
์๋ก ์ ์๋ฌธ์ ๋ค๊ฐ๊ฐ๊ธฐ ์ ์ ๋จผ์ ๋ฒํผ ๋ด ํน์ ๋ธ๋ก์ ์ ๊ทผํ๊ธฐ ์ํ ๊ณผ์ ์ ๋ํด ์์๋ณด์.
Index Scan์ ํตํด ํ๋ํ ROWID์๋ ์ค์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ํ์ผ์ ์ ๋ณด์ ๋ธ๋ก์ ์ ๋ณด๊ฐ ํฌํจ๋๋ค.
๋ค๋ง ๋งค๋ฒ ๋์คํฌ IO๋ฅผ ๋ฐ์์ํฌ ์๋ ์์ผ๋ ์๋ก ์์ ์ธ๊ธํ ๊ฒ์ฒ๋ผ ๋จผ์ ๋ฒํผ ์บ์์ ํด๋น ๋ธ๋ก์ด ์กด์ฌํ๋์ง ํ์ธํ๋ ๊ณผ์ ์ด ์กด์ฌํ๋ค.
์ด ๊ณผ์ ์์ ์ด์ฉ๋๋ ๊ฒ๋ ROWID์ด๋ค.
DB๋ ์ด ROWID๋ฅผ ํด์ ์ฒ๋ฆฌํ๊ณ ํด์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ํด์ ํ ์ด๋ธ ๋ด์์ ํน์ ํด์ ์ฒด์ธ์ ํน์ ํ๋ค.
ํ๋์ ํด์ ์ฒด์ธ์๋ ๊ฐ์ ํด์ ๊ฐ์ ๊ฐ๋ ๋ฒํผ ๋ธ๋ก๋ค์ ํค๋๊ฐ ์ฒด์ธ ํํ๋ก ์ด์ด์ ธ ์์ผ๋ฉฐ ๊ฐ ํค๋์๋ ํด๋น ๋ฒํผ ๋ธ๋ก์ ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ ์ฃผ์(ํฌ์ธํฐ)๊ฐ ์ ์ฅ๋์ด ์๋ค.
์ด ๋ ํด์ ์ฒด์ธ์ ์ ๊ทผํ๊ธฐ ์ํด์๋ ํด์ ์ฒด์ธ ๋์น๋ฅผ ํ๋ํด์ผ ํ๋ค.
ํด์ ์ฒด์ธ ๋์น๋, ํน์ ๋ฒํผ ๋ธ๋ก์ ๋ํ ๋์๋ค๋ฐ์ ์ธ ์ ๊ทผ ๋ฐ ์์ ์์ ์ ๋์์ฑ ๋ฌธ์ ๋ฅผ ๋ฐ์์ํฌ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ ํํ๋ ์ผ์ข ์ ์ํธ ๋ฐฐ์ ๋ฐฉ๋ฒ๋ก ์ด๋ค.
๋ฐ๋ผ์ ๋ฌด์ํ ๋ง์ ์ธ์ ์ด ํ๋์ ํด์ ์ฒด์ธ์ ๋ชฐ๋ฆฌ๊ฒ ๋๋ ๊ฒฝ์ฐ, ๊ฒฝํฉ์ด ๋ฐ์ํ์ฌ ์ฑ๋ฅ ์ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ๊ฐ๋ฅ์ฑ๋ ์กด์ฌํ๋ค. (๋ฌผ๋ก ์ดํ์๋ ์ฒด์ธ ๋์น์๋ ๊ณต์ ๋์น(์ฝ๊ธฐ ์ ์ฉ), ๋ ์ ๋์น(์ฐ๊ธฐ) ๋ฑ์ ๋ ๋ฒจ์ ๋์ด ๊ฒฝํฉ์ ์ด๋ ์ ๋ ํด์ํ๋๋ก ๋ณ๊ฒฝ๋์๋ค.)
์ด๋ฌํ ์ผ๋ จ์ ๊ณผ์ ์ ๊ฑฐ์น ์ดํ์๋ ๋ฒํผ ๋ธ๋ก์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
์ฆ, ํ๋์ ๋ ผ๋ฆฌ์ IO์์ ์ํ๋๋ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ๊ณผ์ ๋ง ๋๊ณ ๋ณด๋๋ผ๋ ๊ฒฐ์ฝ ๋ฌด์ํ ์์ค์ด ๋ชป๋๋ค.
Buffer Pinning
๋ง์ฝ ์ธ๋ฑ์ค ๋ ์ฝ๋๋ค์ด ๋ ์ฝ๋์ ์๋ณด๋ค ํจ์ฌ ์ ์ ๋ช๊ฐ์ ๋ธ๋ก ๋ง์ ๊ฐ๋ฆฌํค๋ ์ํฉ์ ๊ณ ๋ คํ๋ค๋ฉด, ์ธ๋ฑ์ค ์ค์บ์ Single Block IO์ด๋ฏ๋ก ๋งค๋ฒ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ ์ฃผ์๋ฅผ ๊ฐ์ ธ์ค๋ ์์ ์ ์๋กญ๊ฒ ์ํํ ๊น?
Oracle์์๋ Buffer Pinning์ด๋ผ๋ ๊ธฐ๋ฒ์ ํ์ฉํ์ฌ ํด๋น ์ํฉ์ ๊ฐ์ ํ๋ค.
Buffer Pinning์ด๋ ํ๋ฒ์ Call์์ 2๋ฒ ์ด์ ํธ์ถ๋ ๋ธ๋ก์ ๋ํด, ์ด์ ์ ๊ทผํ๊ธฐ ์ํ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ ์ฃผ์๋ฅผ ๋ฒ๋ฆฌ์ง ์๊ณ ์ ์งํ๋ ๊ฒ์ ๋งํ๋ค. (๋ง ๊ทธ๋๋ก ํน์ ๋ฒํผ ๋ธ๋ก์ Pin ์ฒ๋ฆฌํ๋ ๊ฒ)
์ด๋ฅผ ํตํ๋ฉด ์์ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ ์ฃผ์๋ฅผ ํ๋ํ๊ธฐ ์ํด ์ํํ๋ ํด์ ํจ์ ํธ์ถ, ํด์ ํ ์ด๋ธ ํ์, ํด์ ์ฒด์ธ ๋์น ํ๋, ํด์ ์ฒด์ธ ํ์ ๋ฑ์ ๊ณผ์ ์ ์ ๋ถ ๊ฑด๋ ๋ธ ์ ์๊ฒ ๋์ด ์ฑ๋ฅ ์ ์ด์ ์ ๊ฐ์ง ์ ์๋ค.
ํนํ, ํน์ ์ธ๋ฑ์ค๊ฐ ์ ๋ ฌ๋ ํํ์ ๋ง๊ฒ ์ค์ ๋ฐ์ดํฐ๋ ๋์คํฌ ๋ ๋ฒจ์์ ์๋ก ๋ชจ์ฌ์ ๋น์ทํ ๋ธ๋ก๋ค์ ์ ์ฅ๋๊ณ ์๋ค๋ฉด Buffer Pinning์ ์ด์ ์ ๋ ๊ทน๋ํ๋๋ค.
์ด๋ฌํ ์ํฉ์ ํน์ ์ธ๋ฑ์ค์ ๋ํด ํด๋ฌ์คํฐ๋ง ํฉํฐ๊ฐ ์ข๋ค๊ณ ํํํ๋ค.
Clustering Factor ๊ฐ์ ?
ํด๋ฌ์คํฐ๋ง ํฉํฐ๊ฐ ์ข์ ๋ Buffer Pinning ๊ธฐ๋ฒ์ผ๋ก ์ป๋ ์ด์ ๋ ๊ทน๋ํ๋๋ค๋ ๊ฒฐ๋ก ์ด ๋์ถ๋์๋๋ฐ, ๊ทธ๋ ๋ค๋ฉด ์ด๋ป๊ฒ ํด๋ฌ์คํฐ๋ง ํฉํฐ๋ฅผ ๊ฐ์ ํ ์ ์์๊น?
์ฌ์ค ํด๋ฌ์คํฐ๋ง ํฉํฐ๋ฅผ ์ํด ๋ญ๊ฐ ํน๋ณํ ์กฐ์น๋ฅผ ํ๋ ๊ฒ์ ์ผ๋ฐ์ ์ธ ์ํฉ์ ์๋๋ค. ์๋ํ๋ฉด ํด๋ฌ์คํฐ๋ง์ ์ํด์๋ ์ด๋ฅผ ์ํ ๊ธฐ์ค์ด ํ์ํ๊ณ , ์ด๋ ํน์ ์ธ๋ฑ์ค๊ฐ ๋ ํฐ์ธ๋ฐ ์ด ๊ฒฝ์ฐ ํด๋น ํ ์ด๋ธ์์ ๋ค๋ฅธ ์ธ๋ฑ์ค๋ฅผ ํตํด ์ํํ๋ ์์ ์ ํจ์จ์ ๋จ์ด์ง๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ํน์ ์ธ๋ฑ์ค์ ๋ํด ํด๋ฌ์คํฐ๋ง ํฉํฐ๋ฅผ ๊ฐ์ ํด์ผ ํ๋ค๋ฉด Table Reorg๋ ํ ์ด๋ธ ํํฐ์ ๋ ๋ฑ์ ๋ฐฉ๋ฒ์ ์ด์ฉํ ์ ์๋ค.
์ฐธ์กฐ
์น์ ํ SQL ํ๋, 2018 - ์กฐ์ํ ์
'Database > DB ์คํฐ๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ณตํฉ ์ธ๋ฑ์ค ํ์ฉ ๊ฒฝ์ฐ์ ์ (1) | 2023.12.31 |
---|---|
๋ฑํธ ์ฐ์ฐ์์ LIKE ์ฐ์ฐ์ ๊ฐ ๋น๊ต (1) | 2023.12.17 |
ํ ์ด๋ธ ์ค์บ ๋ฐฉ์์ ๋ฐ๋ฅธ DB Block IO ์ ๋ต (Single vs Multi) (1) | 2023.12.02 |
DB ์ธ๋ฑ์ค ์์ฑ์ ์ฌ์ด๋ ์ดํํธ(with Mysql) (1) | 2023.11.25 |
DB ์คํ๊ณํ ํ์ธ๋ฒ(in PostgreSQL) (1) | 2023.11.11 |