database buffer cache

SGA´Â ¿À¶óŬ server°¡ STARTUPµÉ ¶§, computer memory ¿µ¿ª¿¡ ÇÒ´çÇϰí, database°¡ SHUTDOWNµÉ ¶§ ¸Þ¸ð¸®¿¡¼­ Á¦°ÅµÈ´Ù.
»ç¿ëÀÚ°¡ ½ÇÇàÇÑ SQL ¹®¿¡ ÀÇÇØ °Ë»ö ¶Ç´Â º¯°æµÇ´Â Å×ÀÌºí µ¥ÀÌÅ͸¦ Àӽ÷ΠÀúÀåÇÏ´Â ¸Þ¸ð¸® ¿µ¿ªÀ» system global area(SGA)¶ó°í ÇÑ´Ù. ¶Ç´Â Shared Global Area¶ó ºÒ¸®±âµµ ÇÔ
´Ù½Ã¸»Çؼ­, ¿À¶óŬ ServerÀÇ ¸Þ¸ð¸® ¿µ¿ªÀ» ÀǹÌÇÑ´Ù.

µ¥ÀÌÅͺ£À̽º¿¡ Á¢¼ÓÇÏ´Â ¸ðµç »ç¿ëÀÚµéÀÌ °øÀ¯ÇÏ´Â ¿µ¿ªÀ̸ç, ±âº»ÀûÀ¸·Î ¿À¶óŬ µ¥ÀÌÅͺ£À̽º ¼­¹ö´Â ÇϳªÀÇ SGA ¿µ¿ªÀ¸·Î ±¸¼ºµÇ¾î ÀÖ´Ù.


SGAÀÇ Çʼö ¿µ¿ªÀº Shared pool, Database Buffer Cache, Redo log bufferÀÇ ¼¼ ºÎºÐÀ¸·Î ±¸¼ºµÇ¸ç, Ãß°¡ÀûÀ¸·Î Java Pool, large PoolÀ» À§Ä¡½Ãų ¼öµµ ÀÖ´Ù.


SELECTÀÇ Ã³¸®¸¦ À§ÇØ server process´Â °¢ ´Ü°è¸¦ °ÅÄ£ ÈÄ ºñ·Î¼Ò ¿øÇÏ´Â µ¥ÀÌÅ͸¦ ã±â À§ÇØ database buffer cache¸¦ Àд´Ù.
Áï, database buffer cache´Â µ¥ÀÌÅͰ¡ ÀúÀåµÇ¾î ÀÖ´Â ¸Þ¸ð¸® ¿µ¿ªÀ¸·Î µð½ºÅ©ÀÇ data fileÀ» ÀÐ¾î ±×°ÍÀÇ º¹»çº»À» block ´ÜÀ§·Î ÀúÀåÇÑ´Ù.
library cache¿Í ¸¶Âù°¡Áö·Î database buffer cache´Â Least Recently Used(LRU) ¾Ë°í¸®ÁòÀ» ÅëÇØ °ü¸®µÈ´Ù.

DATABASE BUFFER CACHEÀÇ ±¸¼º

database buffer cache´Â data block°ú undo blockÀÇ µÎ ºÎºÐÀ¸·Î ±¸¼ºµÇ¾î ÀÖ´Ù.

Data block

ã°íÀÚ ÇÏ´Â µ¥ÀÌÅͰ¡ database buffer cche¿¡ ÀÖÁö ¾ÊÀ¸¸é SERVER process´Â DATA file¿¡¼­ ÇÊ¿äÇÑ ºÎºÐÀ» ã¾Æ¼­ BLOCK ´ÜÀ§·Î database buffer cache·Î ÀÐ¾î ¿Â´Ù. »ç¿ëÀÚ°¡ ¿ä±¸ÇÑ BLOCKÀ» ¼öÁ¤Çϸé cacheÀÇ data BLOCKÀÌ º¯°æµÈ´Ù. »õ·Î¿î µ¥ÀÌÅÍ´Â º¯°æµÈ ÈÄÀÇ µ¥ÀÌÅÍ °ªÀ» °¡Áö°í ¸Þ¸ð¸® »ó¿¡ ÀÖ´Â »óÅÂÀ̱⠶§¹®¿¡ after image¶ó ÇÑ´Ù.

undo block

¿À¶óŬÀº undo block¿¡ µ¥ÀÌÅÍÀÇ ¿øº» ¹öÀüÀ» ÀúÀåÇÑ´Ù.
¼öÁ¤Çϱâ ÀüÀÇ µ¥ÀÌÅ͸¦ ÀúÀåÇϰí Àֱ⠶§¹®¿¡ before image¶ó ÇÑ´Ù. º¯°æµÈ »çÇ×À» µ¥ÀÌÅͺ£À̽º¿¡ commitÇϱâ Àü¿¡ º¯°æÀ» Ãë¼ÒÇϸé undo blockÀÇ Á¤º¸¸¦ ÀÌ¿ëÇÏ¿© Æ®·£Á§¼ÇÀ» ¿ø·¡ »óÅ·ΠµÇµ¹¸± ¼ö ÀÖ´Ù.

ã°íÀÚ ÇÏ´Â µ¥ÀÌÅ͸¦ database buffer cache¿¡¼­ ã´À³Ä¿¡ µû¶ó ¼º´ÉÀÇ Â÷À̰¡ ¹ß»ýÇÑ´Ù.
´ÙÀ½°ú °°ÀÌ µÎ °¡Áö·Î ³ª´©¾î »ý°¢ÇÒ ¼ö ÀÖ´Ù.

data °Ë»ö°á°ú¼º´É
database buffer cache¿¡ ÀÖ´Â °æ¿ì¸Þ¸ð¸®¿¡¼­ Á÷Á¢ ÀÐ°Ô µÇ¹Ç·Î ¼Óµµ°¡ ºü¸§
À̰ÍÀ» Logical read ¶Ç´Â Cache hit¶ó°í ÇÑ´Ù.
database buffer cache¿¡ ¾ø´Â °æ¿ìµð½ºÅ©ÀÇ data file·ÎºÎÅÍ database buffer cache·Î º¹»çÇØ¾ß ÇϹǷΠ¼Óµµ°¡ ´À¸²
À̰ÍÀ» Physical read ¶Ç´Â Cache Miss¶ó°í ÇÑ´Ù.

cache miss°¡ ¹ß»ý½Ã server process´Â LRU list¿¡¼­ free buffer¸¦ ã±â À§ÇÏ¿© ´ÙÀ½°ú °°Àº °úÁ¤À» °ÅÄ£´Ù.

	1. MRU END¿¡¼­ LRU ENDÂÊÀ¸·Î Ž»ö
	2. Dirty buffer¸¦ ¹ß°ßÇϸé dirty list·Î À̵¿
	3. Free buffer¸¦ ¹ß°ßÇÏ¸é ¸ØÃã
	4. ÀÏÁ¤ ¼ö¸¸Å­ ã´Ù°¡ ¸ø ãÀ¸¸é DBWRÀ» ½ÃÄÑ dirty list¸¦ ºñ¿î ÈÄ free buffer·Î ¸¸µë
DATABASE BUFFER CACHEÀÇ Å©±â

±âº» block Å©±â¸¦ °¡Áö´Â database buffer cache´Â ´ÙÀ½°ú °°ÀÌ µ¶¸³ÀûÀÎ subcacheµé·Î ÀÌ·ç¾î Áø´Ù.
DEFAULT
KEEP
RECYCLE

°¢ ¿µ¿ªµéÀÇ Å©±â´Â µ¿ÀûÀ¸·Î º¯°æÀÌ °¡´ÉÇϸç, ÆÄ¶ó¹ÌÅ͵éÀº ´ÙÀ½°ú °°´Ù.

parameter¼³¸í
DB_CACHE_SIZEDEFAULT ¿µ¿ªÀÇ Å©±â¸¦ °áÁ¤Çϸç Ç×»ó Á¸ÀçÇϸç, 0ÀÌ µÉ ¼ö ¾ø´Ù.
DB_KEEP_CACHE_SIZEKEEP ¿µ¿ªÀÇ Å©±â¸¦ °áÁ¤Çϸç, Àç»ç¿ëµÉ °¡´É¼ºÀÌ Å« BLOCKµéÀ» LRU ¾Ë°í¸®ÁòÀÇ ¿µÇâÀ» ¹ÞÁö ¾Ê°í ¸Þ¸ð¸®¿¡ ÀúÀåÇϱâ À§ÇØ »ç¿ë
DB_RECYCLE_CACHE_SIZERECYCLE ¿µ¿ªÀÇ Å©±â¸¦ °áÁ¤Çϸç, Àç»ç¿ëµÉ °¡´É¼ºÀÌ Èñ¹ÚÇÑ BLOCKµéÀ» ¸Þ¸ð¸®·ÎºÎÅÍ Á¦°ÅÇϱâ À§ÇØ »ç¿ë

database buffer cacheÀÇ Å©±â´Â À§ÀÇ 3°¡Áö ÆÄ¶ó¹ÌÅÍ °ªÀÇ ÇÕÀ¸·Î °áÁ¤µÈ´Ù. database buffer cache³»ÀÇ ±âº» BLOCKÀÇ Å©±â´Â parameter fileÀÇ db_block_size·Î ÁöÁ¤ÇÑ´Ù.

SQL> show parameter db_block_size;
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_block_size                        integer     8192
SQL>
ÀÌ È¯°æ º¯¼ö´Â initSID¸í.ora¿¡¼­ ÁöÁ¤Çϸç, À̸¦ »ç¿ëÀÚ°¡ ÀûÀýÈ÷ ¼öÁ¤ÇÒ ¼ö ÀÖ´Â ¾Æ½ºÅ° ÆÄÀÏ Çü½ÄÀÌ´Ù.

º¸Åë data BLOCKÀÇ Å©±â´Â OSÀÇ BLOCKÀÇ ¹è¼ö·Î °áÁ¤ÇÑ´Ù. ±âº» BLOCKÀÇ Å©±â´Â µ¥ÀÌÅͺ£À̽º »ý¼º½Ã¿¡ °áÁ¤µÇ¸é »ý¼º ÀÌÈÄ º¯°æÇÒ ¼ö ¾ø´Ù.

LRU list¿Í DIRTY list

LRU list´Â °¡Àå ÃÖ±Ù¿¡ »ç¿ëµÈ µ¥ÀÌÅÍ buffer¸¦ ¼ø¼­´ë·Î Á¤·ÄÇØ ³õÀº listÀ̸ç, LRU listÁß dirty buffer¸¸ µû·Î list·Î ±¸¼ºÇÑ °ÍÀÌ dirty listÀÌ´Ù.
LRU list¸¦ »ç¿ëÇÏ°Ô µÇ¸é ÇÑÁ¤µÇ¾î ÀÖ´Â ¸Þ¸ð¸® °ø°£¿¡¼­ ¿À·¡µÈ µ¥ÀÌÅ͸¦ ÇÑÂÊÀ¸·Î ¹èÄ¡ÇÏ¿© »ç¿ëÀÚ°¡ ÀÚÁÖ ¿äûÇÑ µ¥ÀÌÅÍ´Â »¡¸® °Ë»öÇÏ°Ô ÇÏ°í ¿À·¡µÈ µ¥ÀÌÅÍ´Â µð½ºÅ©¿¡ ±â·ÏÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.

¸ÕÀú LRU ¾Ë°í¸®ÁòÀÌ »ç¿ëµÇ´Â LRU list¿¡ ´ëÇØ »ìÆìº¸ÀÚ.
LRU listµµ 3°¡ÁöÀÇ data buffer·Î ³ª´©¾î ±¸¼ºµÈ´Ù.
dirty bufferº¯°æÀÌ ¹ß»ýÇÑ buffer
free bufferº¯°æÀÌ ¹ß»ýÇÏÁö ¾ÊÀº ºñ¾î ÀÖ´Â buffer
pinned bufferÇöÀç server process¿¡ ÀÇÇØ º¯°æÁßÀÎ buffer

°¡Àå ±ú²ýÇÑ ¹öÆÛ°¡ free bufferÀε¥, SERVER process¿¡ ÀÇÇØ µ¥ÀÌÅͰ¡ ±â·ÏµÇ°í ¿ÏÀüÈ÷ º¯°æµÇ¸é DIRTY buffer·Î ¹Ù²ï´Ù. DIRTY buffer´Â »õ·Î¿î µ¥ÀÌÅÍ °ªÀ¸·Î º¯°æÀº µÇ¾úÀ¸³ª data file¿¡ ÀúÀåµÇÁö ¾ÊÀº »óÅÂÀÌ´Ù.

LRU ¾Ë°í¸®Áò¿¡ ÀÇÇØ °ü¸®µÇ¾î ÃÖ±Ù¿¡ »ç¿ëµÇ¾ú´ø ¹öÆÛ´Â MRU(most recently used)ÂÊÀ¸·Î À̵¿ÇÏ°í ¿À·¡µÉ ¼ö·Ï LRU-ENDÂÊ¿¡ ³²°ÔµÈ´Ù.

ÀÌÈÄ DIRTY buffer¸¸ µû·Î ¸ð¾Æ¼­ µð½ºÅ©¿¡ ±â·ÏÇØ¾ß Çϴµ¥, DIRTY buffer¸¸ µû·Î ¸ð¾Æ³õÀº list°¡ DIRTY listÀÌ´Ù.
DIRTY list¿¡ DIRTY buffer°¡ ²Ë Â÷°ÔµÇ¸é DBWRÀ̶ó´Â BACKGROUND process¿¡ ÀÇÇÏ¿© data file¿¡ ±â·ÏµÇ¾î Áø´Ù.

BUFFER CACHE advisory

buffer cache advisory´Â ¿À¶óŬ ½Ã½ºÅÛÀÌ ÇöÀç µ¥ÀÌÅͺ£À̽º°¡ ¼öÇàÁßÀÎ ÀÛ¾÷¿¡ ´ëÇØ database buffer cache¸¦ ´ÃÀ̰ųª ÁÙ¿´À» ¶§ ¿¹»óµÇ´Â ¼º´ÉÀ» ¼öÄ¡»óÀ¸·Î Á¦°øÇÏ¿© °ü¸®ÀÚ°¡ ÃÖÀûÀÇ database buffer cacheÀÇ Å©±â¸¦ °áÁ¤Çϴµ¥ µµ¿òÀ» ÁØ´Ù.
buffer cache advisory´Â DB_CACHE_ADVICE¶ó´Â µ¿Àû ÆÄ¶ó¹ÌÅÍ¿¡ ÀÇÇØ ÇÒ¼ºÈ­/ºñȰ¼ºÈ­ µÈ´Ù. ÆÄ¶ó¹ÌÅͰ¡ °¡Áú ¼ö ÀÖ´Â °ªÀº 3°¡ÁöÀ̸ç, °¢°¢ÀÇ ±â´ÉÀº ´ÙÀ½°ú °°´Ù.
buffer cache advisory¿¡ ÀÇÇØ ¼öÁýµÈ Á¤º¸´Â v$db_cache_advice¸¦ ÅëÇØ Á¶È¸ÇÒ ¼ö ÀÖ´Ù.

valueremark
ONbuffer cache advisry Ȱ¼ºÈ­
OFFȰ¼ºÈ­µÈ buffer cache advisry¸¦ ºñȰ¼ºÈ­
READYbuffer cache advisry¸¦ ½ÇÁ¦ Ȱ¼ºÈ­ÇÏÁö ¾Ê°í »ç¿ëÇÒ ¸Þ¸ð¸®¸¸ ¿¹¾à

buffer cache advisory°¡ Ȱ¼ºÇϵǸé CPU¿Í ¸Þ¸ð¸®¿¡ ¸¹Àº ºÎÇϰ¡ °É¸®°Ô µÇ¸ç, À̶§ advisory¸¦ ¼öÇàÇÒ ÃæºÐÇÑ ¸Þ¸ð¸®°¡ È®º¸µÇÁö ¾ÊÀ¸¸é ¿À¶óŬ ½Ã½ºÅÛÀº ¸Þ¸ð¸® ºÎÁ· ¿¡·¯¸¦ ¹ß»ý½Ã۴µ¥, À̸¦ ¹æÁöÇϱâ À§ÇÏ¿© µ¥ÀÌÅͺ£À̽º¸¦ STARTUPÇÑ Á÷ÈÄ advisory¸¦ ¿ì¼± READY»óÅ·Π±âµ¿ÇÏ¿© ÃæºÐÇÑ ¸Þ¸ð¸®¸¦ È®º¸ÇÑ ´ÙÀ½¿¡ ÇÊ¿ä½Ã ÇÒ¼ºÈ­ÇÏ´À °ÍÀÌ ÁÁ´Ù.

Á¤º¸Á¶È¸

v$db_cache_advicebuffer cache advisory¿¡ ÀÇÇØ ¼öÁýµÈ Á¤º¸ Á¶È¸