์๋ก 
๋์คํฌ ๊ธฐ๋ฐ(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)โ๋ฅผ ๋ฐ๋ก ์ด์ด์ ํ์ธํด๋ณด์ธ์!