DB ๋ฐ์ดํฐ๋ฒ ์ด์ค - Buffer Management ๋ฒํผ ๊ด๋ฆฌ, ๋ฒํผ ๊ต์ฒด ์ ์ฑ
๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ผ์ ๋ธ๋ก์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ๊ณ ์ ๊ธธ์ด์ ์ ์ฅ ๋จ์๋ก ๋๋์ด์ง๋ค. ๋ธ๋ก์ ์ ์ฅ ๊ณต๊ฐ ํ ๋น๊ณผ ๋ฐ์ดํฐ ์ ์ก์ ๋จ์๋ก ์ฌ์ฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
์ ๋์คํฌ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด์ ๋ธ๋ก ์ ์ก ํ์๋ฅผ ์ต์ํํ๋ ค ํ๋ค. ์ด๋ฅผ ์ํด ๋ฉ๋ชจ๋ฆฌ ๋ด์ ๋ฒํผ๋ผ๋ ์์ญ์ด ๋ง๋ จ๋์ด ์์ผ๋ฉฐ, ์ด ๋ฒํผ๋ ๋์คํฌ ๋ธ๋ก์ ๋ณต์ฌ๋ณธ์ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
๋ฒํผ ๊ด๋ฆฌ ์์คํ
๋ฒํผ
๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ผ๋ถ๋ก, ๋์คํฌ ๋ธ๋ก์ ๋ณต์ฌ๋ณธ์ ์ ์ฅํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
๋ฒํผ ๋งค๋์ (๊ด๋ฆฌ์)
๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ ๋ด์ ๋ฒํผ ๊ณต๊ฐ์ ํ ๋นํ๋ ์ญํ ์ ํ๋ ํ์ ์์คํ
์ด๋ค.
ํน์ ๋ธ๋ก์ ์์ฒญ ์, ๋ฒํผ ๋งค๋์ ๋์ ๊ณผ์
ํด๋น ๋ธ๋ก์ด ๋ฒํผ์ ์ด๋ฏธ ์กด์ฌํ๋ฉด, ๊ทธ ๋ธ๋ก์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๋ฐํํ๋ค.
ํด๋น ๋ธ๋ก์ด ๋ฒํผ์ ์์ผ๋ฉด, ๋ฒํผ์์ ๊ทธ ๋ธ๋ก์ ์ํ ๊ณต๊ฐ์ ํ ๋นํ๋ค.
ํ์ํ๋ค๋ฉด ๋ค๋ฅธ ๋ธ๋ก์ ์ ๊ฑฐ(๊ต์ฒด)ํ์ฌ ์ ๋ธ๋ก์ ์ํ ๊ณต๊ฐ์ ํ๋ณดํ๋ค.
์ ๊ฑฐ๋ ๋ธ๋ก์ ์์ ๋ ๊ฒฝ์ฐ์๋ง ๋์คํฌ๋ก ๋ค์ ์ฐ์ฌ์ง๋ค.
๋ฒํผ ๋งค๋์ ๋ ๋์คํฌ์์ ๋ธ๋ก์ ์ฝ์ด ๋ฒํผ๋ก ๊ฐ์ ธ์จ ํ, ์์ฒญ์์๊ฒ ๊ทธ ๋ธ๋ก์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๋ฐํํ๋ค.
์ฃผ์ ๊ณ ๋ ค์ฌํญ
๋ธ๋ก ๊ต์ฒด ์ ๋ต: ๋ฒํผ์์ ๊ณต๊ฐ์ ํ๋ณดํ๊ธฐ ์ํด ์ด๋ค ๋ธ๋ก์ ๊ต์ฒดํ ์ง ๊ฒฐ์ ํ๋ ์ ๋ต์ ์์คํ
์ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ๋ฏธ์น๋ค.
ex) LRU(Least Recently Used) : ๊ฐ์ฅ ์ต๊ทผ์ ์ฌ์ฉ๋์ง ์์ ๋ธ๋ก์ ๊ต์ฒดํ๋ ์ ๋ต
๋ฐ์ดํฐ์ ์ผ๊ด์ฑ: ์์ ๋ ๋ธ๋ก์ ๋์คํฌ์ ๋ค์ ์ธ ๋๋ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ํด ์ฃผ์๊ฐ ํ์
์ฃผ์ ๋ฒํผ ๊ต์ฒด ์ ์ฑ
1) LRU ๊ต์ฒด
๊ณผ๊ฑฐ ์ฐธ์กฐ ํจํด ํ์ฉ: LRU ์ ๋ต์ ๊ณผ๊ฑฐ์ ๋ธ๋ก ์ฐธ์กฐ ํจํด์ ์ฌ์ฉํ์ฌ ๋ฏธ๋์ ์ฐธ์กฐ๋ฅผ ์์ธกํ๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ ๋ธ๋ก์ด ์ผ๋ง๋ ์์ฃผ ์ก์ธ์ค๋๋์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ฅ ์ค๋ซ๋์ ์ฐธ์กฐ๋์ง ์์ ๋ธ๋ก์ ๊ต์ฒด ๋์์ผ๋ก ์ ํํ๋ค.
์ฟผ๋ฆฌ์ LRU ์ ๋ต
์ ์๋ ์ก์ธ์ค ํจํด: ์ฟผ๋ฆฌ๋ ์ข
์ข
์ ์ ์๋ ์ก์ธ์ค ํจํด(์: ์์ฐจ ์ค์บ)์ ๊ฐ์ง๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
์ ์ฌ์ฉ์์ ์ฟผ๋ฆฌ์ ํฌํจ๋ ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฏธ๋์ ์ฐธ์กฐ๋ฅผ ์์ธกํ ์ ์๋ค.
LRU์ ํ๊ณ: ํน์ ์ก์ธ์ค ํจํด, ํนํ ๋ฐ์ดํฐ์ ๋ฐ๋ณต์ ์ธ ์ค์บ์ ํฌํจํ๋ ๊ฒฝ์ฐ LRU ์ ๋ต์ด ๋นํจ์จ์ ์ผ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ๋ ๊ด๊ณ(r๊ณผ s)์ ๋ธ๋ก ์ค์ฒฉ ๋ฃจํ ์กฐ์ธ(block nested-loop join)์ ์ํํ ๋ ๊ฐ r์ ํํ tr์ ๋ํด s์ ๋ชจ๋ ํํ ts๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ๊ฒ์ฌํ๋ฉด, LRU ์ ๋ต์ ์์ฃผ ์ฌ์ฉ๋๋ ๋ธ๋ก์ ๊ต์ฒดํด ๋ฒ๋ฆด ์ ์์ด ๋นํจ์จ์ ์ผ ์ ์๋ค.
ํผํฉ ์ ๋ต
๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
์์๋ ์ฟผ๋ฆฌ ์ต์ ํ๊ธฐ(query optimizer)๊ฐ ์ ๊ณตํ๋ ํํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ต์ฒด ์ ๋ต์ ๊ฒฐ์ ํ๋ ํผํฉ ์ ๋ต์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค. ์ด๋ฌํ ํผํฉ ์ ๋ต์ LRU์ ๊ฐ์ ์ ์ ์ธ ๋ฐฉ๋ฒ๋ณด๋ค ๋ ์ ์ฐํ๊ฒ ๋ฐ์ดํฐ ์ก์ธ์ค ํจํด์ ๋์ํ ์ ์์ผ๋ฉฐ, ํจ์จ์ ์ธ ๋ฒํผ ๊ด๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
2) ๊ณ ์ ๋ ๋ธ๋ก(Pinned Block)
๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก ์ค ์ผ๋ถ๋ '๊ณ ์ ' ์ํ๊ฐ ๋์ด ๋์คํฌ๋ก ๋ค์ ์ฐ์ฌ์ง์ง ์๋๋ก ์ค์ ๋ ์ ์๋ค. ํด๋น ๋ธ๋ก์ด ํ์ฌ ํ๋ฐํ ์ฌ์ฉ ์ค์ด๊ฑฐ๋, ํน์ ์์
์ ์ํด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ง๋์ด์ผ ํ ๋ ์ฌ์ฉ๋๋ค.
3) ์ฆ์ ๋ฒ๋ฆฌ๊ธฐ ์ ๋ต(Toss-Immediate Strategy)
์ด ์ ๋ต์ ๋ธ๋ก์ ๋ง์ง๋ง ํํ์ด ์ฒ๋ฆฌ๋๋ ์ฆ์ ๊ทธ ๋ธ๋ก์ด ์ฐจ์งํ๋ ๊ณต๊ฐ์ ํด์ ํ๋ค. ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ํ์์ผ์ผ ํ๋ ์ํฉ์์ ์ ์ฉํ ์ ์๋ค.
4) ๊ฐ์ฅ ์ต๊ทผ ์ฌ์ฉ ์ ๋ต(Most Recently Used, MRU)
MRU ์ ๋ต์ ๊ฐ์ฅ ์ต๊ทผ์ ์ฌ์ฉ๋ ๋ธ๋ก์ ๊ต์ฒด ๋์์ผ๋ก ์ ํํ๋ค. ๋ฐ๋ณต์ ์ธ ์ค์บ๊ณผ ๊ฐ์ ํน์ ์ผ์ด์ค์์ ์ ๋ฆฌํ ์ ์๋ค.
5) ํต๊ณ ์ ๋ณด ํ์ฉ
๋ฒํผ ๋งค๋์ ๋ ํน์ ๊ด๊ณ์ ๋ํ ์ฐธ์กฐ ํ๋ฅ ์ ๊ดํ ํต๊ณ ์ ๋ณด๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ๋ฐ์ดํฐ ์ฌ์ (data dictionary)์ ์์ฃผ ์ ๊ทผ๋๋ฏ๋ก, ํด๋ฆฌ์คํฑ(heuristic) ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ ์ฌ์ ๋ธ๋ก์ ์ฃผ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ์ ์ ์งํ ์ ์๋ค.
6) ๊ฐ์ ์ถ๋ ฅ(Forced Output)
๋ณต๊ตฌ ๋ชฉ์ ์ ์ํด ๋ฒํผ ๋งค๋์ ๋ ๋ธ๋ก์ ๊ฐ์ ์ถ๋ ฅ์ ์ง์ํ ์๋ ์๋ค. ์์คํ
์ด ์์ ์ ์ธ ์ํ๋ฅผ ์ ์งํ๊ณ ๋ฐ์ดํฐ ์์ค์ ๋ฐฉ์งํ๊ธฐ ์ํด ํ์ํ ๊ฒฝ์ฐ๊ฐ ์๋ค.