SGA Shared Pool ๊ด๋ จ ๊ธ
Database Buffer Cache
์ด์ ๊ธ์์ SGA ๊ตฌ์ฑ์์ Shared Pool์ Parse๋ ๊ณต์ ๋ฐ์ดํฐ์ ๋ํด์ ์์๋ดค์ต๋๋ค. ์ด๋ฒ ๊ธ์์๋ Parse์ ์ด์ด์ Select๋ฌธ ์์ฒญ์ด ๋ค์ด์์ ๋ Execute ๋จ๊ณ๋ฅผ Database Buffer Cache(DBC)์ ์ญํ ์ ์์๋ณด๊ฒ ์ต๋๋ค.
DBC๋ 4๊ฐ์ง ๊ตฌ์ฑ์์๋ฅผ ๊ฐ๊ณ ์์ต๋๋ค.
Keep Buffer Cache : ์์ฃผ ์ฌ์ฉ๋๋ ํ ์ด๋ธ์ ์ง์ ํ์ฉ ์ฌ์ฉ๋๋ Buffer
Recycle Buffer Cache : ์์ฃผ ์ฌ์ฉ๋์ง ์๋ ํ ์ด๋ธ์ ์ง์ ํ์ฌ ์ฌ์ฉ๋๋ Buffer
Default Buffer Cache : ๊ทธ์ธ ์ผ๋ฐ ๊ธฐ๋ณธ Buffer
nK Buffer Cache : ๋ค๋ฅธ Block Size์ ํ ์ด๋ธ์ด ์๋ค๋ฉด ์ฌ์ฉ
Database Buffer Cache๋ ๊ฒ์๋ Data Block์ ๋ณต์ฌ๋ณธ์ Buffer์ ์ ์ฅํฉ๋๋ค. ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์์ด ๋ชจ๋ ์ ์ ๊ฐ ๋์์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ Data Block Size์ ๋์ผํ ํฌ๊ธฐ์ Buffer๋ฅผ ๊ฐ๊ณ ์์ต๋๋ค.
Select Process
Shared Pool์์ Parse๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฆฌ๊ณ SQL๋ฌธ์ ์คํํ ์ค๋น๋ฅผ ๋๋์ต๋๋ค. ์ด์ Execute ๋จ๊ณ์์ ์คํ ๊ณํ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ผํ๋๋ฐ ์ด ๊ณผ์ ์์ Database Buffer Cache๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์์๋ณด๊ฒ ์ต๋๋ค.
Execute
1. User Process Query๋ฌธ ์คํ ์์ฒญ
2. Parse
3. DB File Data Block, Database Buffer Cache๋ก ๋ณต์ฌ
4. Server Process, Database Buffer Cache ์ฝ์ด ํ์ํ ๋ฐ์ดํฐ ๋ฐ์์ด
5. Fetch
์ ์ฒด ํ๋ฆ์ ์์ ๊ฐ์ต๋๋ค. ์์ฒญ์ด ๋ค์ด์ค๋ฉด Server Process๋ ์ง์ DB File์ ์ฝ์ง ์๊ณ ๋จผ์ Database Buffer Cache์ Data Block์ ๋ณต์ฌํ๊ณ Database Buffer Cache์ ์๋ Block์ ์ฝ์ด์ต๋๋ค. ํ๋ฒ์ ์ ๊ทผํ์ง ์๊ณ Cache๋ฅผ ํตํด์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ์ด์ ๋ ์์ผ๊น์? ๊ฒฐ๋ก ์ ์ผ๋ก ์๋ ๋๋ฌธ์ ๋๋ค. ๋ ผ๋ฆฌ์ ์ฝ๊ธฐ(Logical Read)์ ๋ฌผ๋ฆฌ์ (Physical Read)์ ๋ํด์ ์์๋ณด๋ฉด์ ์๋์ ์ฐจ์ด๋ฅผ ์์๋ณด๊ฒ ์ต๋๋ค.
๋ ผ๋ฆฌ์ ์ฝ๊ธฐ์ ๋ฌผ๋ฆฌ์ ์ฝ๊ธฐ
๋ ผ๋ฆฌ์ ์ฝ๊ธฐ(Logical Read)
์ฝ์ผ๋ ค๋ Data Block Address๊ฐ Database Buffer Cache์ ์์ด I/O ์์ด ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๋ ๋ฐฉ์์ ๋๋ค. Cache Hit์ด๋ผ๊ณ ๋ ํฉ๋๋ค.
๋ฌผ๋ฆฌ์ ์ฝ๊ธฐ(Physical Read)
์ฝ์ผ๋ ค๋ Data Block Address๊ฐ Database Buffer Cache์ ์๊ณ Datafile์ ์์ด I/O๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ผํ๋ ๋ฐฉ์์ ๋๋ค. Cache Miss๋ผ๊ณ ๋ ํฉ๋๋ค.
Data Block Address๊ฐ DB File์ ์กด์ฌํ๋ค๋ฉด I/O๋ฅผ ํตํด์ ๋ฐ์ดํฐ๋ฅผ Database Buffer Cache์ ์ฌ๋ ค์ผํฉ๋๋ค. ๋ง์ฝ Database Buffer Cache์ ์กด์ฌํ๋ค๋ฉด I/O์์ด ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๊ธฐ ๋๋ฌธ์ ์๋์ ์ธ ์ธก๋ฉด์์ 10๋ง ~ 20๋ง๋ฐฐ ์ ๋๊ฐ ์ฐจ์ด๊ฐ ๋๋ค๊ณ ํฉ๋๋ค. ์ฆ, Database Buffer Cache์ ์กด์ฌ ์ด์ ๋ ๋ ผ๋ฆฌ์ ์ฝ๊ธฐ๋ฅผ ์ต๋ํ ๋ง์ด ํ๋๋ก ํ๋ ๊ฒ ์ ๋๋ค.
Database Buffer Cache ๋ฉ๋ชจ๋ฆฌ๊ด๋ฆฌ
๋ ผ๋ฆฌ์ ์ธ ์ฝ๊ธฐ๋ฅผ ์ต๋ํ ๋ง์ด ํ๋๋ก ํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ Database Buffer Cache์ ์กด์ฌํ๋ ๊ฒ์ด๊ฒ ์ฃ ? ํ์ง๋ง, ์ ํ๋ ๋ฉ๋ชจ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๊ด๋ฆฌ๋ ํ์ ์ ๋๋ค.
์๋ก์ด ๋ฐ์ดํฐ๊ฐ ๋ค์ด์์ ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํด์ค์ผํฉ๋๋ค. ๋ง์ฝ ํ ๋น ๊ณต๊ฐ์ด ๋ถ์กฑํ๋ฉด ๊ธฐ์กด ๋ฉ๋ชจ๋ฆฌ์ ๋ํ ์ฒ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ด์ ์ Database Buffer Cache์ Buffer๋ค์ ์ํ๋ฅผ ์์์ผํฉ๋๋ค.
Buffer Status
Free : ์ฌ์ฉํด๋ ๋๋ Buffer
Clean : Buffer์ ๋ฐ์ดํฐ์ DB File๋ด์ ๋ฐ์ดํฐ๊ฐ ์ผ์นํ๋ ์ํ
Pinned : ํ์ฌ ์ฌ์ฉ์ค์ธ Buffer. ๋๊ตฐ๊ฐ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ฝ๊ณ ์๋ ์ํ
Dirty : Buffer์ ๋ฐ์ดํฐ์ DB File๋ด์ ๋ฐ์ดํฐ๊ฐ ๋ถ์ผ์น ํ๋ ์ํ
Buffer์ ์ํ๊ฐ Free์ด๊ฑฐ๋ Clean์ผ๋ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ๋ฌธ์ ์์ต๋๋ค. ํ์ง๋ง, Pinned๋ Dirty์ ์ํ์์๋ ํ ๋นํด์ค ์ ์์ต๋๋ค. Pinned์ ๊ฒฝ์ฐ ๋๊ตฐ๊ฐ ์ฌ์ฉํ๊ณ ์๋ ์ํ์ด๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค. Dirty์ ๊ฒฝ์ฐ, DB File๊ณผ Buffer์ ๋ฐ์ดํฐ๊ฐ ์ผ์นํ์ง ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น ํ๋ค๊ฐ ์ผ๊ด๋์ง ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์์ต๋๋ค.
Database Buffered Cache๋ ๊ธฐ๋ณธ์ ์ผ๋ก Shared Pool๊ณผ ๊ฐ์ด LRU(Last Recently Used) ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ฝ ๊ฐ์ฅ ์ต๊ทผ์ ์ฌ์ฉํ์ง ์์ ๋ฐ์ดํฐ๊ฐ Dirtyํ ์ํ์ด๋ฉด? ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ๋ชปํด์ฃผ์์์? ๊ทธ๋์ Touch Count๊ฐ ๊ฐ๋ฏธ๋ LRU ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค๊ณ ํ๋ค์.
๋ง์ฝ ๋ชจ๋ Buffer๊ฐ Freeํ ๊ณต๊ฐ์ด ์๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ์ด๋ฐ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด Oracle์ Background Process์ค์ DBWR(Database Writer)๊ฐ ์ด์ผ ํด์ค๋๋ค.
DBWR Database Writer
DBWR๋ Dirty ์ํ์ธ Buffer๋ฅผ Freeํ ์ํ๋ก ๋ณ๊ฒฝํด์ฃผ๋ ์์ ์ ํฉ๋๋ค. Dirty์ํ์ Buffer๊ฐ ์๊ธฐ๋ฉด ๋ฐ๋ก Dirty List์ ๋ฃ์ด์ค๋๋ค. ์ดํ Dirty๋ฅผ Free๋ก ๋ณ๊ฒฝ์ด ํ์ํ ๋ DBW๊ฐ Dirty List์ ์๋ Buffer๋ค์ ๋ณ๊ฒฝ๋ ๋ด์ฉ์ DB File์ ์ ์ฉ์์ผ์ค๋๋ค. ์๋์ ๊ฐ์ ์ํฉ์์ DBWR ํ๋ก์ธ์ค๊ฐ ์ผ์ ์์ํฉ๋๋ค.
1. FREE BUFFER๋ฅผ ์ฐพ๊ธฐ ์ํด LRU LIST๋ฅผ ์๊ณ๊ธธ์ด(Threshold Length) ๋งํผ ์ฐพ์์ ๋
๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํด LRU LIST์์ FREEํ BUFFER๋ฅผ ์ฐพ์ต๋๋ค. ๋๋ฌด ์ค๋ ์๊ฐ ํ์ญํ๋ ๊ฒ์ ๋นํจ์จ์ ์ด๊ธฐ ๋๋ฌธ์ Threshold Length๋ก ์ง์ ๋ ๊ธธ์ด๊น์ง Freeํ Block์ ๋ชป ์ฐพ์ผ๋ฉด Dirty List์ ๋ค์ด์๋ ๋ด์ฉ์ Disk์ ๋ฐ์ํฉ๋๋ค.
2. Dirty List์ ๊ธธ์ด๊ฐ ์๊ณ๊ธธ์ด๋งํผ ๋์ด๋ฌ์ ๋
ํ๋ฒ์ ๋๋ฌด ๋ง์ ์์ ๋ฐ์์ํค๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด Dirty List๊ฐ ์๊ณ๊ธธ์ด๋งํผ ๋์ด๋๋ DBWR๊ฐ ์ผ์ ํฉ๋๋ค.
3. Timeout ์๊ฐ 3์ด ๋ง๋ค
์ง์ ๋ Timeout ์๊ฐ๋ง๋ค DIsk์ ๋ฐ์ํฉ๋๋ค.
4. Check Point ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋
Check Point๋ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๋ด์ฉ์ ๋์คํฌ์ ๋ง์ถฐ์ฃผ๋ ๊ฒ ์ ๋๋ค.
Redo Log Buffer Update ์ฐธ์กฐ ๊ธ
๋๊ธ