About
home
Tmax OpenSQL
home
๐Ÿ’Ž

9. PostgreSQL์˜ Buffer Manager

์ž‘์„ฑ์ž
JSW

์„œ๋ก 

๋””์Šคํฌ ๊ธฐ๋ฐ˜(Disk-oriented) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ชจ๋“  ๋ชจ๋“ˆ ์ค‘ ์ œ์ผ ๋งŽ์€ ๋ณดํ‹€๋„ฅ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ณณ์„ ๊ณ ๋ฅด๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ๋ฒ„ํผ ๋งค๋‹ˆ์ €(Buffer Manager)์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋””์Šคํฌ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ OLTP ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์— ๋Œ€ํ•œย ๋…ผ๋ฌธ์— ์˜ํ•˜๋ฉด TPC-C ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ „์ฒด CPU Instruction ์ค‘ ๋ฒ„ํผ ๋งค๋‹ˆ์ €์— ์‚ฌ์šฉ๋œ ๊ฒƒ์ด 35%๋กœ ์ œ์ผ ๋งŽ์•˜๊ณ , ๊ทธ ๋‹ค์Œ์ด ๋ฝ(Lock)๊ณผ ๋ž˜์น˜(Latch)๊ฐ€ ๊ฐ๊ฐ 16%๋ฅผ ์ฐจ์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ CPU ์—ฐ์‚ฐ์€ 7%์— ๋ถˆ๊ณผํ•œ ๊ฒƒ์„ ๋ณด๋ฉด ๋ฒ„ํผ ๋งค๋‹ˆ์ €๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ๋ ฅ์€ ์ƒ๋‹นํžˆ ํฌ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
PostgreSQL๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฒ„ํผ ๋งค๋‹ˆ์ €๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” ์˜ํ–ฅ๋„๋ฅผ ์ž˜ ์•Œ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์–‘ํ•œ ๋งค์ปค๋‹ˆ์ฆ˜์„ ๋„์ž…ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์–ด๋–ป๊ฒŒ PostgreSQL์ด ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ๋Š”์ง€ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Buffer Manager ์†Œ๊ฐœ

๋ฒ„ํผ ๋งค๋‹ˆ์ €๋Š” PostgreSQL์˜ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ์™€ ์˜๊ตฌ ์ €์žฅ์†Œ ์‚ฌ์ด์˜ ๋ฐ์ดํ„ฐ ์ „์†ก์— ๋Œ€ํ•œ ๊ด€๋ฆฌ๋ฅผ ์ฑ…์ž„์ง‘๋‹ˆ๋‹ค. ์ฝ๊ธฐ/์“ฐ๊ธฐ ์š”์ฒญ์ด ๋ฐœ์ƒํ•œ ๋ธ”๋ก์„ ๋ฉ”๋ชจ๋ฆฌ์— ์บ์‹ฑํ•˜์—ฌ ๋””์Šคํฌ I/O๋ฅผ ์ตœ์†Œํ™” ํ•˜๊ณ  ์ ์ ˆํ•œ ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ์บ์‹œ ๋ฏธ์Šค๊ฐ€ ์ตœ์†Œํ•œ์œผ๋กœ ๋ฐœ์ƒํ•˜๋„๋ก ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
PostgreSQL์˜ ๋ฐฑ์—”๋“œ ํ”„๋กœ์„ธ์Šค(์งˆ์˜ ์ฒ˜๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ํ”„๋กœ์„ธ์Šค)๊ฐ€ ํ…Œ์ด๋ธ”์ด๋‚˜ ์ธ๋ฑ์Šค ๋ธ”๋ก์— ๋Œ€ํ•œ ์ ‘๊ทผ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ฒ„ํผ ๋งค๋‹ˆ์ €์—๊ฒŒ ์š”์ฒญํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋™์ž‘ ๋ฐฉ์‹์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์š”์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
1.
๋ฐฑ์—”๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ‘๊ทผํ•˜๋ ค๋Š” ๋ธ”๋ก์— ๋Œ€ํ•ด ๋ฒ„ํผ ํƒœ๊ทธ(๋ฐ์ดํ„ฐ ๊ฐ์ฒด์˜ ์‹๋ณ„์ž, ํŒŒ์ผ ํฌํฌ ๋ฒˆํ˜ธ, ๊ทธ๋ฆฌ๊ณ  ๋ธ”๋ก ๋ฒˆํ˜ธ๋กœ ๊ตฌ์„ฑ๋œ ๊ตฌ์กฐ์ฒด)๋ฅผ ํ‚ค๋กœ ๋ฒ„ํผ ๋งค๋‹ˆ์ €์— ์ ‘๊ทผ ์š”์ฒญ
2.
๋ฒ„ํผ ๋งค๋‹ˆ์ €๋Š” ํ‚ค์— ํ•ด๋‹น๋˜๋Š” ๋ธ”๋ก์ด ์œ„์น˜ํ•œ ๋ฒ„ํผ ํ’€์˜ ์Šฌ๋กฏ(Slot) ๋ฒˆํ˜ธ๋ฅผ ๋ฐ˜ํ™˜
3.
๋ฐฑ์—”๋“œ ํ”„๋กœ์„ธ์Šค๋Š” ๋ฐ˜ํ™˜๋ฐ›์€ ์Šฌ๋กฏ ๋ฒˆํ˜ธ๋กœ ์›ํ•˜๋Š” ๋ธ”๋ก์„ ์ ‘๊ทผ
์•„๋ž˜ ๋ฒ„ํผ ์บ์‹œ์˜ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ฉด์„œ ๋” ์ƒ์„ธํ•œ ๋™์ž‘ ๋ฐฉ์‹์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Buffer Manager ๊ตฌ์กฐ

๋ฒ„ํผ ๋งค๋‹ˆ์ €๋Š” ๋ฐ์ดํ„ฐ ํŒŒ์ผ์„ ์Šฌ๋กฏ์œผ๋กœ ๊ฐ–๋Š” ๋ฐฐ์—ด์ธ ๋ฒ„ํผ ํ’€(Buffer Pool)๊ณผ ๋ฒ„ํผ ํƒœ๊ทธ์™€ ๋ฒ„ํผ ํ’€ ์Šฌ๋กฏ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ๊ฐ ํ‚ค์™€ ๊ฐ’์œผ๋กœ ๊ฐ–๋Š” ํ•ด์‹œ ํ…Œ์ด๋ธ”์ธ ๋ฒ„ํผ ๋งต(Buffer Map)์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๋ฒ„ํผ ๋งต

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

๋ฒ„ํผ ํ’€

๋ฒ„ํผ ํ’€์€ ๋””์Šคํฌ๋กœ๋ถ€ํ„ฐ ์ฝ์–ด์˜จ ๋ธ”๋ก์„ ์บ์‹ฑํ•ด ๋†“๋Š” ๋ฒ„ํผ ๊ณต๊ฐ„ ์™ธ์—๋„ ์บ์‹œ๋กœ์„œ์˜ ์—ญํ• ์„ ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š”๋ฐ ์ฃผ์š” ํ•„๋“œ์— ๋Œ€ํ•ด ๋ชจ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.
โ€ข
๋ฒ„ํผ ์‹๋ณ„์„ ์œ„ํ•œ ์ •๋ณด
โ—ฆ
๋ฒ„ํผ ํƒœ๊ทธ: ๋งตํ•‘๋˜์–ด ์žˆ๋Š” ๋ธ”๋ก์— ๋Œ€ํ•œ ๋ฒ„ํผ ํƒœ๊ทธ
โ—ฆ
๋ฒ„ํผ ์•„์ด๋””: ํ•ด๋‹น ๋ฒ„ํผ๊ฐ€ ์œ„์น˜ํ•ด ์žˆ๋Š” ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค
โ€ข
๋ฒ„ํผ ์‚ฌ์šฉ ์ •๋ณด
โ—ฆ
ํ•€ ๊ฐœ์ˆ˜(Pin Count): ํ•ด๋‹น ๋ธ”๋ก์„ ์‚ฌ์šฉ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค ๊ฐœ์ˆ˜; ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ธ”๋ก์— ์ ‘๊ทผํ•  ๊ฒฝ์šฐ ํ•€ ๊ฐœ์ˆ˜๋ฅผ ํ•˜๋‚˜์”ฉ ์ฆ๊ฐ€, ๋ธ”๋ก์— ๋Œ€ํ•œ ์ ‘๊ทผ์ด ๋๋‚˜๋ฉด ํ•˜๋‚˜์”ฉ ๊ฐ์†Œ
โ—ฆ
์‚ฌ์šฉ ํšŸ์ˆ˜: ๋ฒ„ํผ ํ’€ ์Šฌ๋กฏ์— ์˜ฌ๋ผ์˜จ ์ดํ›„ ํ•ด๋‹น ๋ธ”๋ก์ด ์ ‘๊ทผ๋œ ํšŸ์ˆ˜
โ—ฆ
ํ”„๋ฆฌ ๋„ฅ์ŠคํŠธ: ํ”„๋ฆฌ ๋ฆฌ์ŠคํŠธ(์•„๋ž˜ ์„ค๋ช… ์ฐธ๊ณ )์˜ ๋‹ค์Œ ์—”ํŠธ๋ฆฌ๊ฐ€ ์œ„์น˜ํ•œ ์ธ๋ฑ์Šค
โ€ข
๋ฒ„ํผ ์ ‘๊ทผ ์ œ์–ด๋ฅผ ์œ„ํ•œ ๋ฝ
โ—ฆ
์ปจํ…์ธ  ๋ฝ(Contents Lock): ํ•ด๋‹น ๋ธ”๋ก ์ ‘๊ทผ์— ๋Œ€ํ•œ ๋™์‹œ์„ฑ์„ ์ œ์–ดํ•˜๋Š” ๋ฝ
โ—ฆ
IO ์ง„ํ–‰์ค‘ ๋ฝ(IO in Progress Lock): ํ•ด๋‹น ๋ธ”๋ก์— ๋Œ€ํ•œ ๋””์Šคํฌ I/O๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ ์œ„ํ•œ ๋ฝ
โ€ข
๋ฒ„ํผ ์ƒํƒœ ์ •๋ณด
โ—ฆ
๋”ํ‹ฐ(Dirty) ํ”Œ๋ž˜๊ทธ: ํ•ด๋‹น ๋ธ”๋ก์— ์ƒˆ๋กœ์šด ๊ฐ’์ด ์“ฐ์—ฌ์กŒ์ง€๋งŒ ์˜๊ตฌ ์ €์žฅ์†Œ์—๋Š” ์•„์ง ์“ฐ์—ฌ์ง€์ง€ ์•Š์€ ์ƒํƒœ
โ—ฆ
์œ ํšจ์„ฑ(Valid) ํ”Œ๋ž˜๊ทธ: ํ•ด๋‹น ๋ธ”๋ก์„ ์ฝ๊ฑฐ๋‚˜ ์จ๋„ ๋˜๋Š”์ง€์— ๋Œ€ํ•œ ์ƒํƒœ
โ—ฆ
IO ์ง„ํ–‰ ์ค‘ ํ”Œ๋ž˜๊ทธ: ๋””์Šคํฌ I/O ์ค‘์ธ์ง€์— ๋Œ€ํ•œ ์ƒํƒœ
์œ„ ํ•„๋“œ๋ฅผ ํ† ๋Œ€๋กœ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ์ƒํƒœ๋ฅผ ์•„๋ž˜ 3๊ฐ€์ง€๋กœ ํ‘œํ˜„ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
โ€ข
๋น„์–ด์žˆ์Œ(Empty): ์Šฌ๋กฏ์— ๋ธ”๋ก์ด ์—†์Œ (์ฆ‰, ํ•€ ๊ฐœ์ˆ˜ 0, ์‚ฌ์šฉ ํšŸ์ˆ˜ 0)
โ€ข
ํ•€ ๊ฝ‚์Œ(Pinned): ์Šฌ๋กฏ์— ๋ธ”๋ก์ด ์žˆ๊ณ  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉ ์ค‘ (์ฆ‰, ํ•€ ๊ฐœ์ˆ˜, ์‚ฌ์šฉ ํšŸ์ˆ˜ ๋ชจ๋‘ 1 ์ด์ƒ)
โ€ข
ํ•€ ํ•ด์ œ(Unpinned): ์Šฌ๋กฏ์— ๋ธ”๋ก์€ ์žˆ๋Š”๋ฐ ์•„๋ฌด ํ”„๋กœ์„ธ์Šค๋„ ์‚ฌ์šฉ ์ค‘์ด์ง€ ์•Š์Œ (์ฆ‰, ํ•€ ๊ฐœ์ˆ˜ 0, ์‚ฌ์šฉ ํšŸ์ˆ˜ 1 ์ด์ƒ)

ํ”„๋ฆฌ ๋ฆฌ์ŠคํŠธ

ํ”„๋ฆฌ ๋ฆฌ์ŠคํŠธ๋Š” ๋น„์–ด์žˆ๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์Šฌ๋กฏ์„ ์—ฐ๊ฒฐํ•ด๋†“์€ ๋ฆฌ์ŠคํŠธ์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ธ”๋ก์„ ๋ฒ„ํผ ํ’€์— ์ฝ์–ด ์˜ฌ๋ฆด ๋•Œ ์–ด๋–ค ์Šฌ๋กฏ์ด ๋น„์–ด์žˆ๋Š”์ง€ ํƒ์ƒ‰์„ ํ•˜๊ธฐ์—” ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ƒˆ๋กœ์šด ๋ธ”๋ก์„ ์˜ฌ๋ฆด ๋•Œ ํ”„๋ฆฌ ๋ฆฌ์ŠคํŠธ์˜ ์ฒซ๋ฒˆ์žฌ ์—”ํŠธ๋ฆฌ๋ฅผ ๊บผ๋‚ด์„œ ๋น ๋ฅด๊ฒŒ ํƒ์ƒ‰์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ด€๋ฆฌํ•˜๊ฒŒ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
ํ”„๋ฆฌ ๋ฆฌ์ŠคํŠธ๋กœ๋ถ€ํ„ฐ ๊บผ๋‚ด์˜จ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ธ”๋ก์ด ์‹ค์ œ๋กœ ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š” ์ด์ƒ ๋‹ค์‹œ ํ”„๋ฆฌ๋ฆฌ์ŠคํŠธ๋กœ ๋Œ์•„๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ์ผ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ์ƒํƒœ๊ฐ€ "๋น„์–ด์žˆ์Œ"์œผ๋กœ ๋ณ€๊ฒฝ๋˜๊ณ  ํ”„๋ฆฌ ๋ฆฌ์ŠคํŠธ์— ๋ฐ˜ํ™˜๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
1.
ํ…Œ์ด๋ธ” ๋˜๋Š” ์ธ๋ฑ์Šค๊ฐ€ ์‚ญ์ œ๋œ ๊ฒฝ์šฐ
2.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์‚ญ์ œ๋œ ๊ฒฝ์šฐ
3.
VACUUM FULL ๋ช…๋ น์–ด๋กœ ํ…Œ์ด๋ธ” ๋˜๋Š” ์ธ๋ฑ์Šค๊ฐ€ ์ •๋ฆฌ๋œ ๊ฒฝ์šฐ

๋ฒ„ํผ ํ’€

๋ฒ„ํผ ํ’€์€ ๋ฐ์ดํ„ฐ ํŒŒ์ผ ๋ธ”๋ก์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฐ์—ด์ด๋ฉฐ ๊ฐ ์Šฌ๋กฏ์˜ ํฌ๊ธฐ๋Š” 8KB๋กœ ๋ธ”๋ก์˜ ํฌ๊ธฐ์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

๋””์Šคํฌ์—์„œ ์ƒˆ๋กœ์šด ๋ธ”๋ก ์ฝ์–ด์˜ค๊ธฐ

์ด ๋‹จ๊ณ„์—์„œ ๋ฒ„ํผ ์บ์‹œ๊ฐ€ ์ฒ˜์Œ์œผ๋กœ ์ƒˆ๋กœ์šด ๋ธ”๋ก์„ ์ฝ์–ด์˜ฌ ๋•Œ์˜ ๋™์ž‘ ๋ฐฉ์‹์„ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ธ”๋ก์„ ์ฝ์–ด์˜จ ํ›„ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋งŒ ๋ธ”๋ก์„ ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋™์ž‘ ๋ฐฉ์‹์ด ๊ฑฐ์˜ ๋™์ผํ•˜์ง€๋งŒ, ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ๊ฐ™์€ ๋ธ”๋ก์„ ์ ‘๊ทผํ•  ๋•Œ๋‚˜, ๋ฒ„ํผ ํ’€์— ๋น„์–ด์žˆ๋Š” ์Šฌ๋กฏ์ด ์—†๋Š” ๊ฒฝ์šฐ ๋“ฑ ์กฐ๊ธˆ ๋” ๋ณต์žกํ•œ ์ƒํ™ฉ์—์„œ๋Š” ์ถ”๊ฐ€๋กœ ๋™์ž‘ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ๋ถ€๋ถ„์€ ์•„๋ž˜ ์„น์…˜์—์„œ ์„ค๋ช…ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
์ƒˆ๋กœ์šด ๋ธ”๋ก์„ ์ฝ์–ด์˜ค๋Š” ๋™์ž‘ ๋ฐฉ์‹์€ ์•„๋ž˜ ๋‹จ๊ณ„๋กœ ์š”์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
1.
ํ”„๋ฆฌ ๋ฆฌ์ŠคํŠธ๋กœ๋ถ€ํ„ฐ ๋น„์–ด์žˆ๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์Šฌ๋กฏ์„ ๊ตฌํ•œ ํ›„ ๋ฒ„ํผ์— ํ•€ ๊ฝ‚์Œ
2.
๋ฒ„ํผ ํ…Œ์ด๋ธ”์— ๋ธ”๋ก์˜ ๋ฒ„ํผ ํƒœ๊ทธ์™€ ์Šฌ๋กฏ ์ธ๋ฑ์Šค๋ฅผ ๋‹ด์€ ์ƒˆ๋กœ์šด ์—”ํŠธ๋ฆฌ ์ถ”๊ฐ€
3.
๋””์Šคํฌ๋กœ๋ถ€ํ„ฐ ํ•€ ๊ฝ‚์€ ๋ฒ„ํผ ํ’€ ์Šฌ๋กฏ์— ๋ธ”๋ก ๋กœ๋”ฉ
4.
๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ์ฝ์–ด์˜จ ๋ธ”๋ก์— ๋Œ€ํ•œ ์ •๋ณด ์ €์žฅ

๋ฒ„ํผ ์บ์‹œ์˜ ๋ฝ ๊ด€๋ฆฌ

๋ฒ„ํผ ์บ์‹œ๋Š” ๋‹ค์–‘ํ•œ ๋ชฉ์ ์„ ์œ„ํ•ด ๋ฝ ๋งค์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๋žตํ•˜๊ฒŒ ๋‚˜์—ดํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
1.
๋ฒ„ํผ ํ…Œ์ด๋ธ” ๋ฝ: ๋ฒ„ํผ ํ…Œ์ด๋ธ” ์ˆ˜์ • ์‹œ ๋™์‹œ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฝ
2.
๋ฒ„ํผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ปจํ…์ธ  ๋ฝ: ๋ฒ„ํผ ์บ์‹œ ๊ตฌ์กฐ ์„ค๋ช… ์ฐธ๊ณ 
3.
๋ฒ„ํผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ IO ์ง„ํ–‰์ค‘ ๋ฝ: ๋ฒ„ํผ ์บ์‹œ ๊ตฌ์กฐ ์„ค๋ช… ์ฐธ๊ณ 

๋ฒ„ํผ ํ…Œ์ด๋ธ” ๋ฝ

๋ฒ„ํผ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ฒ„ํผ ํ…Œ์ด๋ธ” ๋ฝ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„ํผ ํ…Œ์ด๋ธ” ๋ฝ์€ ๊ณต์œ ์ž ๊ธˆ(Shared)๊ณผ ๋ฐฐํƒ€์ž ๊ธˆ(Exclusive) ๋ชจ๋“œ๋กœ ์ œ๊ณต๋˜๋Š”๋ฐ ๋ฐฑ์—”๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฒ„ํผ ํ…Œ์ด๋ธ”์„ ์กฐํšŒํ•  ๋•Œ๋Š” ๊ณต์œ ์ž ๊ธˆ ๋ชจ๋“œ๋กœ, ๋ฒ„ํผ ํ…Œ์ด๋ธ”์„ ์ˆ˜์ •ํ•  ๋•Œ๋Š” ๋ฐฐํƒ€์ž ๊ธˆ ๋ชจ๋“œ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ „์ฒด ๋ฒ„ํผ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด ๋ฐฐํƒ€์ž ๊ธˆ ๋ชจ๋“œ๋กœ ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ์ˆ˜์ •ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋ฝ ์ปจํ…์…˜์ด ๋งŽ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ PostgreSQL์—์„œ๋Š” ๋ฒ„ํผ ํ…Œ์ด๋ธ” ๋ฝ์„ ํŒŒํ‹ฐ์…˜์œผ๋กœ ๋‚˜๋ˆ ์„œ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค(๊ธฐ๋ณธ ๊ฐ’์€ 128๊ฐœ์˜ ํŒŒํ‹ฐ์…˜). ํŒŒํ‹ฐ์…˜์œผ๋กœ ๋‚˜๋ˆ  ๊ด€๋ฆฌํ•˜๋ฉด ์—ฌ๋Ÿฌ ๋ฐฑ์—”๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ๋ฒ„ํผ ํ…Œ์ด๋ธ”์„ ์ˆ˜์ •ํ•˜๋”๋ผ๋„ ์ˆ˜์ •ํ•˜๋ ค๋Š” ์—”ํŠธ๋ฆฌ๊ฐ€ ๋‹ค๋ฅธ ํŒŒํ‹ฐ์…˜์— ์žˆ๋‹ค๋ฉด ์„œ๋กœ ๊ธฐ๋‹ค๋ฆด ํ•„์š” ์—†์ด ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋ฒ„ํผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ฝ

๋ฐฑ์—”๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฒ„ํผ ์บ์‹œ๋กœ๋ถ€ํ„ฐ ๋ฐ˜ํ™˜๋ฐ›์€ ์Šฌ๋กฏ ๋ฒˆํ˜ธ๋กœ ๋ฒ„ํผ์— ์ ‘๊ทผํ•  ๋•Œ๋„ ๋™์‹œ์„ฑ์— ๋Œ€ํ•ด ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฝ์ด ์ปจํ…์ธ  ๋ฝ์ž…๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ธ”๋ก์„ ์ฝ์œผ๋ ค๊ณ  ํ•  ๋•Œ๋Š” ๊ณต์œ ์ž ๊ธˆ ๋ชจ๋“œ๋กœ ์ฝ์Šต๋‹ˆ๋‹ค. ๋‹จ, ์•„๋ž˜์˜ ๊ฒฝ์šฐ์—๋Š” ๋ฐฐํƒ€์ž ๊ธˆ ๋ชจ๋“œ๋กœ ๋ธ”๋ก์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค.
โ€ข
ํŠœํ”Œ(Tuple)์„ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ t_xmin, t_xmax์™€ ๊ฐ™์€ ํ•„๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒฝ์šฐ
โ€ข
ํŠœํ”Œ์„ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ง€์šฐ๊ฑฐ๋‚˜ ๊ฐ€์šฉ ๊ณต๊ฐ„์„ ์ปดํŒฉ์…˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
โ€ข
ํŠœํ”Œ์„ ํ”„๋ฆฌ์ฆˆ(Freeze)ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
I/O ์ง„ํ–‰์ค‘ ๋ฝ์€ ๋ธ”๋ก์˜ ๋””์Šคํฌ I/O์ด ์ง„ํ–‰๋˜๋Š” ๋™์•ˆ์—๋Š” ์ ‘๊ทผ์„ ๋ง‰๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ธ”๋ก์„ ๋””์Šคํฌ์— ์“ฐ๊ฑฐ๋‚˜ ๋””์Šคํฌ๋กœ๋ถ€ํ„ฐ ์ฝ์–ด์˜ฌ ๋•Œ ๋ฐฐํƒ€์ž ๊ธˆ ๋ชจ๋“œ๋กœ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ์ ‘๊ทผ์„ ๋ง‰์•„๋†“์Šต๋‹ˆ๋‹ค.

๋ฒ„ํผ ์บ์‹œ ๋™์ž‘ ๋ฐฉ์‹

์ด์ œ ๋ฒ„ํผ ํ’€์— ์žˆ๋Š” ๋ธ”๋ก์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ ๋น„์–ด์žˆ๋Š” ์Šฌ๋กฏ์— ๋ธ”๋ก์„ ๋กœ๋”ฉํ•˜๊ฑฐ๋‚˜ ๋ฒ„ํผ ํ’€์— ๋น„์–ด์žˆ๋Š” ์Šฌ๋กฏ์ด ๋”์ด์ƒ ์—†์„ ๋•Œ ํŽ˜์ด์ง€ ๊ต์ฒด(Page Replacement) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒ„ํผ ํ’€์—์„œ ์ซ“์•„๋‚ผ ๋ธ”๋ก์„ ์ฐพ๋Š” ๊ฒƒ๊นŒ์ง€ ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์—์„œ ๋ฒ„ํผ ์บ์‹œ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฒ„ํผ ํ’€์— ์žˆ๋Š” ๋ธ”๋ก์— ์ ‘๊ทผํ•˜๊ธฐ

์ œ์ผ ๊ฐ„๋‹จํ•œ ์ƒํ™ฉ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•˜๋Š” ๋ธ”๋ก์ด ์ด๋ฏธ ๋ฒ„ํผ ํ’€์— ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฒ„ํผ ์บ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
1.
๋ฐฑ์—”๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ „๋‹ฌํ•œ ๋ฒ„ํผ ํƒœ๊ทธ๋ฅผ ํ‚ค๋กœ ํ•ด์‹œ๊ฐ’ ํš๋“
2.
์—”ํŠธ๋ฆฌ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ํŒŒํ‹ฐ์…˜์— ๋Œ€ํ•ด ๋ฒ„ํผ ํ…Œ์ด๋ธ” ๋ฝ์„ ๊ณต์œ ์ž ๊ธˆ ๋ชจ๋“œ๋กœ ํš๋“
3.
์ฐพ์€ ์—”ํŠธ๋ฆฌ๋กœ๋ถ€ํ„ฐ ๋ฒ„ํผ ํ’€ ์Šฌ๋กฏ ๋ฒˆํ˜ธ ํš๋“
4.
ํ•ด๋‹น๋˜๋Š” ๋ฒ„ํผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์Šฌ๋กฏ์— ํ•€ ๊ฝ‚์Œ(์ฆ‰, ํ•€ ๊ฐœ์ˆ˜์™€ ์‚ฌ์šฉ ํšŸ์ˆ˜๋ฅผ ํ•˜๋‚˜์”ฉ ๋Š˜๋ฆผ)
5.
๋ฒ„ํผ ํ…Œ์ด๋ธ” ๋ฝ ํ•ด์ œ
6.
๋ฒ„ํผ ํ’€ ์Šฌ๋กฏ์— ์ ‘๊ทผ
7.
๋ธ”๋ก ์‚ฌ์šฉ ์ „ ์ปจํ…์ธ  ๋ฝ ํš๋“
8.
๋ธ”๋ก ์‚ฌ์šฉ์ด ๋๋‚˜๋ฉด ์ปจํ…์ธ  ๋ฝ๊ณผ ํ•€ ํ•ด์ œ
7๋ฒˆ์—์„œ ์ปจํ…์ธ  ๋ฝ ํš๋“ ์‹œ ๋ธ”๋ก์„ ์ฝ๊ธฐ๋งŒ ํ•  ๋•Œ๋Š” ๊ณต์œ ์ž ๊ธˆ ๋ชจ๋“œ๋กœ, ๋ธ”๋ก์— ํŠœํ”Œ์„ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜๋Š” ๋“ฑ ์“ฐ๊ธฐ๋ฅผ ํ•œ๋‹ค๋ฉด ๋ฐฐํƒ€์ž ๊ธˆ ๋ชจ๋“œ๋กœ ๋ฝ์„ ํš๋“ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ , ์“ฐ๊ธฐ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๋”ํ‹ฐ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ผœ์ฃผ์–ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋ผ์ดํ„ฐ(Writer) ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋”ํ‹ฐ ๋ธ”๋ก์„ ๋””์Šคํฌ์— ํ”Œ๋Ÿฌ์‹œ(Flush) ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค.

๋ฒ„ํผ ํ’€์— ์ฐพ๋Š” ๋ธ”๋ก์ด ์—†์–ด ๋น„์–ด์žˆ๋Š” ์Šฌ๋กฏ์— ๋กœ๋”ฉํ•˜๊ธฐ

์ด๋ฒˆ์—๋Š” ๋ฐฑ์—”๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•˜๋Š” ๋ธ”๋ก์ด ๋ฒ„ํผ ํ’€์—๋Š” ์—†์ง€๋งŒ ํ”„๋ฆฌ ๋ฆฌ์ŠคํŠธ์— ๋น„์–ด์žˆ๋Š” ์Šฌ๋กฏ์ด ์žˆ์–ด์„œ ๋””์Šคํฌ๋กœ๋ถ€ํ„ฐ ๋ธ”๋ก์„ ๋กœ๋”ฉํ•˜์—ฌ ๋ฐฑ์—”๋“œ ํ”„๋กœ์„ธ์Šค์— ์ „๋‹ฌํ•ด์ฃผ๋Š” ๋™์ž‘์„ ์‚ดํŽด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
1.
๋ฒ„ํผ ํ…Œ์ด๋ธ”์— ๋ฒ„ํผ ํƒœ๊ทธ๋กœ ์—”ํŠธ๋ฆฌ ํƒ์ƒ‰ ์‹œ๋„(์‹คํŒจ)
2.
ํ”„๋ฆฌ ๋ฆฌ์ŠคํŠธ์—์„œ ๋น„์–ด์žˆ๋Š” ์Šฌ๋กฏ ํš๋“ํ•˜์—ฌ ํ•€ ๊ฝ‚์Œ
3.
๋ฒ„ํผ ํƒœ๊ทธ๊ฐ€ ํ•ด๋‹น๋˜๋Š” ๋ฒ„ํผ ํ…Œ์ด๋ธ” ํŒŒํ‹ฐ์…˜์— ๋Œ€ํ•ด ๋ฐฐํƒ€์ž ๊ธˆ ๋ชจ๋“œ๋กœ ๋ฝ ํš๋“
4.
๋ฒ„ํผ ํ…Œ์ด๋ธ”์— ์ƒˆ๋กœ์šด ์—”ํŠธ๋ฆฌ ์ถ”๊ฐ€(ํ‚ค: ๋ฒ„ํผ ํƒœ๊ทธ, ๊ฐ’: ์ƒˆ๋กœ ํš๋“ํ•œ ์Šฌ๋กฏ ๋ฒˆํ˜ธ)
5.
์ ‘๊ทผํ•˜๋ ค๋Š” ๋ธ”๋ก์„ ๋น„์–ด์žˆ๋Š” ์Šฌ๋กฏ์— ๋กœ๋”ฉ
a.
ํ•ด๋‹น ์Šฌ๋กฏ์— ๋Œ€ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— I/O ์ง„ํ–‰์ค‘ ๋ฝ ํš๋“ํ•˜๊ณ  I/O ์ง„ํ–‰์ค‘ ํ”Œ๋ž˜๊ทธ ์„ค์ •
b.
์ ‘๊ทผํ•˜๋ ค๋Š” ๋ธ”๋ก์„ ๋””์Šคํฌ๋กœ๋ถ€ํ„ฐ ์ฝ์–ด์™€ ์Šฌ๋กฏ์— ์”€
c.
I/O ์ง„ํ–‰์ค‘ ํ”Œ๋ž˜๊ทธ ํ•ด์ œ, ์œ ํšจ์„ฑ ํ”Œ๋ž˜๊ทธ ์„ค์ •
d.
I/O ์ง„ํ–‰์ค‘ ๋ฝ ํ•ด์ œ
6.
๋ฒ„ํผ ํ…Œ์ด๋ธ” ๋ฝ ํ•ด์ œ
7.
๋ธ”๋ก ์ ‘๊ทผ

๋ฒ„ํผ ํ’€์—์„œ ๋ธ”๋ก์„ ์ซ“์•„๋‚ด๊ณ  ํ•„์š”๋กœ ํ•˜๋Š” ๋ธ”๋ก์„ ๋กœ๋”ฉํ•˜๊ธฐ

๋งˆ์ง€๋ง‰์œผ๋กœ ํ”„๋ฆฌ ๋ฆฌ์ŠคํŠธ์— ๋”์ด์ƒ ๋น„์–ด์žˆ๋Š” ์Šฌ๋กฏ์ด ์—†์–ด์„œ "ํ•„์š”์—†๋Š”" ๋ธ”๋ก์„ ํ•„์š”๋กœ ํ•˜๋Š” ๋ธ”๋ก์œผ๋กœ ๊ต์ฒดํ•˜๋Š” ๋™์ž‘์„ ์‚ดํŽด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
1.
๋ฒ„ํผ ํ…Œ์ด๋ธ”์— ๋ฒ„ํผ ํƒœ๊ทธ๋กœ ์—”ํŠธ๋ฆฌ ํƒ์ƒ‰ ์‹œ๋„(์‹คํŒจ)
2.
ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ต์ฒดํ•  ์Šฌ๋กฏ ์„ ํƒ
3.
๊ต์ฒดํ•  ์Šฌ๋กฏ์˜ ๋ธ”๋ก์ด ๋”ํ‹ฐ ๋ธ”๋ก์ธ ๊ฒฝ์šฐ ๋””์Šคํฌ ํ”Œ๋Ÿฌ์‹œ
4.
๊ต์ฒดํ•  ์Šฌ๋กฏ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ์ €์žฅ๋œ ๋ฒ„ํผ ํƒœ๊ทธ๋กœ ๋ฒ„ํผ ํ…Œ์ด๋ธ”์„ ํƒ์ƒ‰ํ•ด ์˜ˆ์ „ ์—”ํŠธ๋ฆฌ๊ฐ€ ๋‹ด๊ธด ํŒŒํ‹ฐ์…˜์— ๋ฐฐํƒ€์ž ๊ธˆ ๋ชจ๋“œ๋กœ ๋ฝ ํš๋“
5.
๋ฐฑ์—”๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ „๋‹ฌํ•œ ๋ฒ„ํผ ํƒœ๊ทธ๋กœ ํ•ด๋‹น๋˜๋Š” ๋ฒ„ํผ ํ…Œ์ด๋ธ” ํŒŒํ‹ฐ์…˜์— ๋ฐฐํƒ€์ž ๊ธˆ ๋ชจ๋“œ๋กœ ๋ฝ ํš๋“ ํ›„ ์ƒˆ๋กœ์šด ์—”ํŠธ๋ฆฌ ์ถ”๊ฐ€
6.
์ƒˆ๋กœ์šด ์—”ํŠธ๋ฆฌ ์ถ”๊ฐ€ ์™„๋ฃŒ ํ›„ ์˜ˆ์ „ ์—”ํŠธ๋ฆฌ๋ฅผ ๋ฒ„ํผ ํ…Œ์ด๋ธ”์—์„œ ์‚ญ์ œํ•˜๊ณ  ์˜ˆ์ „ ํŒŒํ‹ฐ์…˜์— ๋Œ€ํ•œ ๋ฝ ํ•ด์ œ
7.
๊ต์ฒดํ•  ์Šฌ๋กฏ์„ ํ•„์š”๋กœ ํ•˜๋Š” ๋ธ”๋ก์œผ๋กœ ๋ฎ์–ด ์”Œ์šฐ๊ณ  ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ๊ด€๋ จ ์ •๋ณด ์„ค์ •
8.
์ƒˆ๋กœ์šด ์—”ํŠธ๋ฆฌ ํŒŒํ‹ฐ์…˜์— ๋Œ€ํ•œ ๋ฒ„ํผ ํ…Œ์ด๋ธ” ๋ฝ ํ•ด์ œ
9.
๋กœ๋”ฉํ•œ ๋ธ”๋ก์— ์ ‘๊ทผ

ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋‹ค์–‘ํ•œ ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ PostgreSQL์€ ํด๋Ÿญ ์Šค์œ„ํ”„(Clock Sweep) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํƒํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(8.1 ๋ฒ„์ „ ์ดํ›„์ด๋ฉฐ ์ด์ „์—๋Š” LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ). ํด๋Ÿญ ์Šค์œ„ํ”„๋Š” NFU(Not Frequently Used) ๋ฐฉ์‹์˜ ๋ณ€์ข…์œผ๋กœ ์ž์ฃผ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ธ”๋ก์„ ํšจ์œจ์ ์ด๊ฒŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.
๋ฐฉ์‹์€ ๋ฒ„ํผ ํ’€์— ์žˆ๋Š” ์Šฌ๋กฏ์„ ์ˆœํšŒํ•˜๋ฉฐ ํ•€ ๊ฐœ์ˆ˜์™€ ์‚ฌ์šฉ ํšŸ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์ ์ ˆํ•œ ๋Œ€์ƒ์ž๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ˆœํšŒํ•  ๋•Œ ๊ฐ ์Šฌ๋กฏ์— ๋Œ€ํ•œ ์„ ํƒ ์—ฌ๋ถ€ ์กฐ๊ฑด์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
1.
ํ•€์ด ๊ฝ‚ํ˜€ ์žˆ๋Š” ์Šฌ๋กฏ์€ ๊ฑด๋„ˆ ๋œ€
2.
ํ•€์ด ํ•ด์ œ๋˜์–ด ์žˆ๋Š”๋ฐ ์‚ฌ์šฉ ํšŸ์ˆ˜๊ฐ€ 1 ์ด์ƒ์ธ ์Šฌ๋กฏ์€ ์‚ฌ์šฉ ํšŸ์ˆ˜๋ฅผ ํ•˜๋‚˜์”ฉ ๊ฐ์†Œ
3.
ํ•€์ด ํ•ด์ œ๋˜์–ด ์žˆ๊ณ  ์‚ฌ์šฉ ํšŸ์ˆ˜๋„ 0์ธ ์Šฌ๋กฏ์€ ๋Œ€์ƒ์ž๋กœ ์„ ํƒ
์œ„ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•€์ด ํ•ด์ œ๋˜์–ด ์žˆ๋Š” ์Šฌ๋กฏ์ด ํ•˜๋‚˜ ์ด์ƒ ์žˆ์„ ์‹œ ํ•ญ์ƒ ๊ต์ฒด ๋Œ€์ƒ์ž๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ง€๊ธˆ๊นŒ์ง€ PostgreSQL์˜ Buffer Manager์— ๊ด€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค
โ€˜PostgreSQL์˜ WAL(Write Ahead Log)โ€™๋ฅผ ๋ฐ”๋กœ ์ด์–ด์„œ ํ™•์ธํ•ด๋ณด์„ธ์š”!

์ž์œ ๋กญ๊ฒŒ ๋Œ“๊ธ€์„ ๋‚จ๊ฒจ์ฃผ์„ธ์š”