Database (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)

DB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค - Buffer Management ๋ฒ„ํผ ๊ด€๋ฆฌ, ๋ฒ„ํผ ๊ต์ฒด ์ •์ฑ…

9taetae9 2024. 4. 21. 16:51
728x90

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŒŒ์ผ์€ ๋ธ”๋ก์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๊ณ ์ • ๊ธธ์ด์˜ ์ €์žฅ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด์ง„๋‹ค. ๋ธ”๋ก์€ ์ €์žฅ ๊ณต๊ฐ„ ํ• ๋‹น๊ณผ ๋ฐ์ดํ„ฐ ์ „์†ก์˜ ๋‹จ์œ„๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์€ ๋””์Šคํฌ์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์˜ ๋ธ”๋ก ์ „์†ก ํšŸ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๋ ค ํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์— ๋ฒ„ํผ๋ผ๋Š” ์˜์—ญ์ด ๋งˆ๋ จ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ด ๋ฒ„ํผ๋Š” ๋””์Šคํฌ ๋ธ”๋ก์˜ ๋ณต์‚ฌ๋ณธ์„ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

๋ฒ„ํผ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ
๋ฒ„ํผ
๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ผ๋ถ€๋กœ, ๋””์Šคํฌ ๋ธ”๋ก์˜ ๋ณต์‚ฌ๋ณธ์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.


๋ฒ„ํผ ๋งค๋‹ˆ์ €(๊ด€๋ฆฌ์ž)
๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์˜ ๋ฒ„ํผ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋Š” ํ•˜์œ„ ์‹œ์Šคํ…œ์ด๋‹ค.

ํŠน์ • ๋ธ”๋ก์„ ์š”์ฒญ ์‹œ, ๋ฒ„ํผ ๋งค๋‹ˆ์ € ๋™์ž‘ ๊ณผ์ •
ํ•ด๋‹น ๋ธ”๋ก์ด ๋ฒ„ํผ์— ์ด๋ฏธ ์กด์žฌํ•˜๋ฉด, ๊ทธ ๋ธ”๋ก์˜ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
ํ•ด๋‹น ๋ธ”๋ก์ด ๋ฒ„ํผ์— ์—†์œผ๋ฉด๋ฒ„ํผ์—์„œ ๊ทธ ๋ธ”๋ก์„ ์œ„ํ•œ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•œ๋‹ค.
ํ•„์š”ํ•˜๋‹ค๋ฉด ๋‹ค๋ฅธ ๋ธ”๋ก์„ ์ œ๊ฑฐ(๊ต์ฒด)ํ•˜์—ฌ ์ƒˆ ๋ธ”๋ก์„ ์œ„ํ•œ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•œ๋‹ค.
์ œ๊ฑฐ๋œ ๋ธ”๋ก์€ ์ˆ˜์ •๋œ ๊ฒฝ์šฐ์—๋งŒ ๋””์Šคํฌ๋กœ ๋‹ค์‹œ ์“ฐ์—ฌ์ง„๋‹ค.
๋ฒ„ํผ ๋งค๋‹ˆ์ €๋Š” ๋””์Šคํฌ์—์„œ ๋ธ”๋ก์„ ์ฝ์–ด ๋ฒ„ํผ๋กœ ๊ฐ€์ ธ์˜จ ํ›„, ์š”์ฒญ์ž์—๊ฒŒ ๊ทธ ๋ธ”๋ก์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

์ฃผ์š” ๊ณ ๋ ค์‚ฌํ•ญ
๋ธ”๋ก ๊ต์ฒด ์ „๋žต: ๋ฒ„ํผ์—์„œ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๋ธ”๋ก์„ ๊ต์ฒดํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์ „๋žต์€ ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค. 

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)
๋ณต๊ตฌ ๋ชฉ์ ์„ ์œ„ํ•ด ๋ฒ„ํผ ๋งค๋‹ˆ์ €๋Š” ๋ธ”๋ก์˜ ๊ฐ•์ œ ์ถœ๋ ฅ์„ ์ง€์›ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์‹œ์Šคํ…œ์ด ์•ˆ์ •์ ์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์†์‹ค์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

728x90