๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ORACLE/ADMIN

[Oracle] SGA Database Buffer Cache DBC ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒ„ํผ ์บ์‹œ ์‚ฌ์šฉ์›๋ฆฌ :: ๋งˆ์ด์ž๋ชฝ

by ๐ŸŒปโ™š 2020. 4. 1.

SGA Shared Pool ๊ด€๋ จ ๊ธ€

 

[Oracle] SGA Shared Pool ๊ณต์œ ํ’€ ์‚ฌ์šฉ ์›๋ฆฌ :: ๋งˆ์ด์ž๋ชฝ

Shared Pool Library Cache : parsing๋œ ์ •๋ณด๋ฅผ ์ €์žฅ Data Dictionary Cache : Data Dictionary์˜ ์ •๋ณด๋ฅผ ์ €์žฅ --> Hard Parse ์ž‘์—…์„ ๋นจ๋ฆฌ ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด Result Cache : ์‹คํ–‰๋œ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅ (11g new feature) --..

myjamong.tistory.com

 

 

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 ์ฐธ์กฐ ๊ธ€

 

[Oracle] SGA Redo Log Buffer ๋ฆฌ๋‘ ๋ฒ„ํผ ์‚ฌ์šฉ์›๋ฆฌ :: ๋งˆ์ด์ž๋ชฝ

Redo Log Buffer ์ด์ „ ๊ธ€๋“ค์—์„œ๋Š” Shared Pool๊ณผ Database Buffer Cache์— ๋Œ€ํ•ด์„œ ํ•˜๋‚˜์˜ SELECT๋ฌธ์„ ํ†ตํ•ด ์–ด๋–ค ์›๋ฆฌ๋กœ ์‚ฌ์šฉ๋˜๋Š”์ง€ ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” UPDATE๋ฌธ์„ ๊ฐ–๊ณ  ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์žˆ์„ ๋•Œ Redo Log Bu..

myjamong.tistory.com

 

 

๋Œ“๊ธ€