ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

bufferpoolºÍsharedpoolÏê½â£¨Ò»£©(Ò»)
2014-11-24 00:12:29 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:38´Î
Tags£ºbufferpool sharedpool Ïê½â

¡¾ÉîÈë½âÎö--eygle¡¿Ñ§Ï°±Ê¼Ç

1.1 buffer poolÔ­Àí

Buffer CacheÊÇOracle SGAÖÐÒ»¸öÖØÒª²¿·Ö£¬Í¨³£µÄÊý¾Ý·ÃÎʺÍÐ޸ͼÐèҪͨ¹ýBufferCacheÀ´Íê³É¡£µ±Ò»¸ö½ø³ÌÐèÒª·ÃÎÊÊý¾Ýʱ£¬Ê×ÏÈÐèҪȷ¶¨Êý¾ÝÔÚÄÚ´æÖÐÊÇ·ñ´æÔÚ£¬Èç¹ûÊý¾ÝÔÚBufferÖдæÔÚ£¬ÔòÐèÒª¸ù¾ÝÊý¾ÝµÄ״̬À´ÅжÏÊÇ·ñ¿ÉÒÔÖ±½Ó·ÃÎÊ»¹ÊÇÐèÒª¹¹ÔìÒ»ÖÂÐÔ¶ÁÈ¡£»Èç¹ûÊý¾ÝÔÚBufferÖв»´æÔÚ£¬ÔòÐèÒªÔÚBuffer CacheÖÐѰÕÒ×ã¹»µÄ¿Õ¼äÒÔ×°ÔØÐèÒªµÄÊý¾Ý£¬Èç¹ûBuffer CacheÖÐÕÒ²»µ½×ã¹»µÄÄÚ´æ¿Õ¼ä£¬ÔòÐèÒª´¥·¢DBWRȥд³öÔàÊý¾Ý£¬ÊÍ·ÅBuffer¿Õ¼ä¡£

1.1.1 LRU ÓëLRUW List

ÔÚBuffer CacheÖУ¬Oracleͨ¹ý¼¸¸öÁ´±í½øÐÐÄÚ´æ¹ÜÀí£¬ÆäÖÐ×îΪÊìÖªµÄÊÇLRU ListºÍLRUW List£¨Ò²¾­³£±»³ÆÎªWrite/Dirty List£©£¬¸÷ÖÖListÉÏ´æ·ÅµÄÊÇÖ¸Ïò¾ßÌåµÄBufferµÄÖ¸ÕëµÈÐÅÏ¢¡£

´ÓOracle8¿ªÊ¼£¬ÎªÁËʵʩÔöÁ¿¼ì²éµã£¬Oracle»¹ÒýÈëÁ˼ì²éµã¶ÓÁÐ- Checkpoint QueueºÍÎļþ¶ÓÁÐ ¨C File Queue£»´ÓOracle8i¿ªÊ¼£¬ÓÉÓÚÒì²½DBWnµÄÒýÈ룬ÏÖÔÚ¹ØÓÚ¸÷ÖÖListÒÔ¼°QueueµÄ¸üΪ¾«È·µÄ¸ÅÄîÊǹ¤×÷¼¯£¨WS - Working Sets£©£¬ ÔÚ Ã¿ ¸öWSÖаüº¬¼¸¸ö²»Í¬¹¦ÄܵÄList£¬Ã¿ ¸öList¶¼Í¨¹ýCache Buffers LRU CHAIN Latch½øÐб£»¤£¬µ±Ê¹ Óà ¶à ¸öDBWR½ø³Ìʱ£¨Í¨¹ýDB_WRITER_PROCESSES²ÎÊý¿ÉÒÔÉèÖÃÊý¾Ý¿âʹÓöà¸öDBWR½ø³Ì£©£¬Êý¾Ý¿âÖÐ»á´æÔÚ¶à¸öWS£¬Í¬Ê±µ±Ê¹ÓÃBuffer CacheµÄ¶à»º³å³Ø¼¼Êõʱ£¬Ã¿¸ö¶ÀÁ¢µÄ»º³å³ØÒ²»á´æÔÚ¸÷×Ô¶ÀÁ¢µÄWS¡£

LRU ListÓÃÓÚά»¤ÄÚ´æÖеÄBuffer£¬°´ÕÕLRUËã·¨½øÐйÜÀí£¨ÔÚ²»Í¬°æ±¾ÖУ¬¹ÜÀí·½Ê½ÓÐËù²»Í¬£©£¬Êý¾Ý¿â³õʼ»¯Ê±£¬ËùÓеÄBuffer¶¼±»Hashµ½LRUListÉϹÜÀí¡£µ±ÐèÒª´ÓÊý¾ÝÎļþÉ϶ÁÈ¡Êý¾Ýʱ£¬Ê×ÏÈÒªÔÚLRU ListÉÏѰÕÒFreeµÄBuffer£¬È» ºó ¶Á È¡ Êý ¾Ý µ½Buffer CacheÖУ»µ±Êý¾Ý±»ÐÞ¸ÄÖ®ºó£¬×´Ì¬±äΪDirty£¬¾Í¿ÉÒÔ±»Òƶ¯ÖÁLRUW List£¬LRUW ListÉϵͼÊǺòÑ¡µÄ¿ÉÒÔ±»DBWRд³öµ½Êý¾ÝÎļþµÄBuffer£¬Ò»¸öBufferҪôÔÚLRU ListÉÏ£¬ÒªÃ´ÔÚLRUW ListÉÏ´æÔÚ£¬²»ÄÜͬʱÔÚÕâÁ½¸öListÉÏ´æÔÚ¡£

ÏÂͼÊÇBuffer CacheÖÐLRU¼°LRUW ListµÄ¼òҪʾÒâͼ£º

\\

¼ì²éµã¶ÓÁУ¨Checkpoint Queue£©Ôò¸ºÔð°´ÕÕÊý¾Ý¿éµÄÐÞ¸Ä˳Ðò¼Ç¼Êý¾Ý¿é£¬Í¬Ê±½«RBAºÍÊý¾Ý¿é¹ØÁªÆðÀ´£¬ÕâÑùÔÚ½øÐÐÔöÁ¿¼ì²éµãʱ£¬Êý¾Ý¿â¿ÉÒÔ°´ÕÕÊý¾Ý¿éÐ޸ĵÄÏȺó˳Ðò½«Æäд³ö£¬´Ó¶øÔÚ½øÐлָ´Ê±£¬¿ÉÒÔ¸ù¾Ý×îºóд³öÊý¾Ý¿é¼°ÆäÏà¹ØµÄRBA¿ªÊ¼½øÐпìËÙ»Ö¸´¡£ÔÚ¼ì²éµã´¥·¢Ê±DBWR¸ù¾Ý¼ì²éµã¶ÓÁÐÖ´ÐÐд³ö£¬ÔÚÆäËûÌõ¼þ´¥·¢Ê±£¬DBWRÓÉDirty ListÖ´ÐÐд³ö¡£¼ì²éµã¶ÓÁеÄÄÚ´æÔÚShared PoolÄÚ´æÖзÖÅ䣺

ͬÑù¾ßÓÐÏà¹ØLatch¶ÔÆä½øÐб£»¤£º

15:48:38 sys@felix SQL>select name ,gets,missesfrom v$latch where name like '%checkpoint queue%';

NAME GETS MISSES

-------------------------------------------------- ----------

active checkpoint queue latch 10247 0

checkpoint queue latch 145659 1

15:48:39 sys@felix SQL>

¿ÉÒÔͨ¹ýÏÂͼÀ´Ïêϸ½éÉÜÒ»ÏÂBufferCacheµÄÔ­Àí¼°Ê¹Óãº

\\

1£®µ±Ò»¸öServer½ø³ÌÐèÒª¶ÁÊý¾Ýµ½Buffer CacheÖÐʱ£¬Ê×ÏȱØÐëÅжϸÃÊý¾ÝÔÚBuffer

ÖÐÊÇ·ñ´æÔÚ£¨Í¼ÖТÙËùʾ¹ý³Ì£©£¬Èç ¹û ´æ ÔÚ ÇÒ ¿É Óà £¬Ôò»ñÈ¡¸ÃÊý¾Ý£¬Í¬Ê±¸ù¾ÝLRU

Ëã·¨Ôö½øÆä·ÃÎʼÆÊý£»Èç¹ûBufferÖв»´æÔÚ¸ÃÊý¾Ý£¬ÔòÐèÒª´ÓÊý¾ÝÎļþÉϽøÐжÁÈ¡¡£

2£®ÔÚ¶ÁÈ¡Êý¾Ý֮ǰ£¬Server½ø³ÌÐèҪɨÃèLRU ListѰÕÒFreeµÄBuffer£¬É¨Ãè¹ý³ÌÖÐServer½ø³Ì»á°Ñ·¢ÏÖµÄËùÓÐÒѾ­±»Ð޸ĹýµÄBuffer×¢²áµ½LRUW ListÉÏ£¨Í¼ÖТÚËùʾ¹ý³Ì£©£¬ÕâЩDirty BufferËæºó¿ÉÒÔ±»Ð´³öµ½Êý¾ÝÎļþ¡£

3£® Èç¹ûLRUW Queue³¬¹ýÁË·§Öµ£¬Server½ø³Ì¾Í»á֪ͨDBWnȥд³öÔàÊý¾Ý£¨Í¼ÖТÛËùʾ¹ý³Ì£©£»

ÕâÒ²ÊÇ´¥·¢DBWnдµÄÒ»¸öÌõ¼þ£¬Õâ¸ö·§ÖµÔø¾­Ìáµ½ÊÇ25%£¬Ò²¾ÍÊǵ±Dirty Queue³¬¹ý25%Âú¾Í»á´¥·¢DBWnµÄд²Ù×÷£º

16:13:58 sys@felix SQL>select kvittag, kvitval,kvitdsc from x$kvit where kvittag ='kcbldq';

KVITTAG KVITVAL KVITDSC

-------------------- ------------------------------------------------------------

kcbldq 25 large dirty queue ifkcbclw reaches this

16:14:04 sys@felix SQL>

Èç¹ûServer½ø³ÌɨÃèLRU³¬¹ýÒ»¸ö·§ÖµÈÔÈ»²»ÄÜÕÒµ½×ã¹»µÄFree Buffer£¬½«Í£Ö¹Ñ°ÕÒ£¬×ª¶øÍ¨ÖªDBWnȥд³öÔàÊý¾Ý£¬ÊÍ·ÅÄÚ´æ¿Õ¼ä¡£

ͬÑùÕâ¸ö·§Öµ¿ÉÒÔ´ÓÒÔÉÏ×Öµä±íÖвéѯµÃµ½£¬Õâ¸öÊý×ÖÊÇ40%£¬Ò²¾ÍÊÇ˵µ±Server½ø³ÌɨÃèLRU³¬¹ý40%»¹Ã»ÄÜÕÒµ½×ã¹»µÄFree Buffer¾Í»áÍ£Ö¹ËÑË÷£¬Í¨ÖªDBWnÖ´ÐÐд³ö£¬ÕâÊǽø³Ì»á´¦ÓÚfree buffer waitµÈ´ý

16:18:03 sys@felix SQL>col KVITDSC for a60

16:18:20 sys@felix SQL>select kvittag, kvitval,kvitdsc from x$kvit where kvittag = 'kcbfsp';

KVITTAG KVITVAL KVITDSC

-------------------- ----------------------------------------------------------------------

kcbfsp 40 Max percentage of LRUlist foreground can scan for free

16:18:24 sys@felix SQL>

ͬʱÎÒÃÇÖªµÀ£¬ÓÉÓÚÔöÁ¿¼ì²éµãµÄÒýÈ룬DBWnÒ²»áÖ÷¶¯É¨ÃèLRU List£¬½«·¢ÏÖµÄDirty Buffer×¢²áµ½Dirty ListÒÔ¼°Checkpoint Queue£¬Õâ¸öɨÃèÒ²ÊÜÒ»¸öÄÚ²¿Ô¼Êø£¬ÔÚOracle9iR2ÖУ¬Õâ¸ö±ÈÀýÊÇ25%£º

4£® ÕÒµ½×ã¹»µÄBufferÖ®ºó£¬Server½ø³Ì¾Í¿ÉÒÔ½«Buffer´ÓÊý¾ÝÎļþ¶ÁÈëBuffer Cache£¨Í¼ÖТÜËùʾ¹ý³Ì£©

5£® Èç¹û¶ÁÈ¡µÄBlock²»Âú×ã¶ÁÒ»ÖÂÐÔÐèÇó£¬ÔòServer½ø³ÌÐèҪͨ¹ýµ±Ç°Block°æ±¾ºÍ»Ø¹ö¶Î¹¹Ôìǰ¾µÏñ·µ»Ø¸øÓû§¡£

´ÓOracle 8i¿ªÊ¼£¬LRU ListºÍLRUW ListÓÖ·Ö±ðÔö¼ÓÁ˸¨ÖúList£¨AUXILIARY List£©£¬ÓÃÓÚÌá¸ß¹ÜÀíЧÂÊ¡£ÒýÈëÁ˸¨ÖúListÖ®ºó£¬µ±Êý¾Ý¿â³õʼ»¯Ê±£¬BufferÊ×ÏÈ´æ·ÅÔÚLRUµÄ¸¨ÖúListÉÏ£¨AUXILIARY RPL_LST£©

Ê×Ò³ ÉÏÒ»Ò³ 1 2 3 4 ÏÂÒ»Ò³ βҳ 1/4/4
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£ºSQLµãµÎ9¨DSQL ServerÖеÄÊÂÎñ´¦À.. ÏÂһƪ£ºMongoDBϵÁÐÖ®Èý£¨¸±±¾¼¯ÅäÖã©

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ: