|
Buffer CacheÄÚ²¿
Buffer cacheÊÇΪÁËʵÏÖÏû³ýƵ·±µÄÊý¾Ý¿éÎïÀíI/O£¬´Ó¶øÌá¸ß²¢·¢·ÃÎʺÍOLTPÓ¦ÓóÌÐòµÄÐÔÄÜ¡£Oracle buffer cacheÄܹ»£º Êý¾ÝÔÚÄÚ´æÖпÉÓ㺼õÉÙÎïÀíI/O Ò»Ö¶Á£ºÊý¾ÝÔÚÄÚ´æÏàͬµÄ¿é¿ÉÓµÓжà¸ö°æ±¾ ²¢·¢¿ØÖÆ£ºÍ¨¹ýÀûÓø÷ÖÖÀàÐ͵ÄËøÀ´¿ØÖƲ¢·¢·ÃÎÊͬһ×ÊÔ´ ÊõÓï data buffer header listµÄ½á¹¹ÊÇÓùþϣͰHash buketsÀ´¹¹½¨µÄ£¬Ëü°´ÕÕ<rdba,class>·Ö×é¡£×¢Ò⣬block classºÍblock type²»Í¬¡£
Hash chain£¬ÔòÊÇÔÚÿһ¸öHash buketÄÚ²¿£¬Î¬»¤¶à¸ödata buffer headerµÄÊý¾Ý½á¹¹¡£
LRUÔòÊÇÒ»ÖÖÓÃÓÚѰÕÒfree bufferµÄ»úÖÆ¡£
(Rdba = relative data block address)
LRUºÍbuckets/chains²»Í¬£º • ÓÃÓÚѰÕÒijһָ¶¨µÄhash buckets/chains • LRUÌṩѰÕÒ¿ÕÏÐbufferµÄ·½·¨£¬´Ólistβ²¿¿ªÊ¼ÕÒ¡£ Buffer headerÄÚÈÝ¿ÉÒÔͨ¹ý·ÃÎÊX$BH±íÀ´·ÃÎÊ¡£ Hash Buckets and Chains
ĬÈϵÄhash bucketsÊýÁ¿ = DB_BLCOK_BUFFERS ¡Á 2
Õâ¸ö²ÎÊýÊÇÖ¸¶¨buffer cacheÀïÃæµÄ¿éÊý£¬Ëü¡Áblock size¾ÍÊÇbuffer cacheµÄ´óС¡£µ«ÊÇÔÚOracle10gÀïÃæ£¬ÄÚ´æÄ¬ÈÏÊÇ×Ô¶¯¹ÜÀíµÄ£¬ËùÒÔÕâ¸ö²ÎÊýÒ»°ãÊÇ0£¬¶øÃ»Óвο¼¼ÛÖµ¡£
Ëü¿ÉÒÔͨ¹ýÄÚ²¿²ÎÊý_db_block_hash_bucketsÀ´ÖØÐ´£¬ÔÚÎҵIJâÊÔϵͳÖУ¬¸Ä²ÎÊýΪ£º _db_block_hash_buckets 131072 = 1G ÿ¸öHash bucketsÀïÃæ°üº¬Ò»¸ödata buffer header chain£¬°´Ò»×éÒ»×é<rdba,class>ÅÅÁС£ ÿ¸öHash bucketsÓµÓÐÒ»¸öcache buffer chain latch£¬ÓÃÓÚ¿ØÖƲ¢·¢·ÃÎÊ¡£ ÈçºÎ¶Ôhash chainµÄ·ÃÎʶ¼±ØÐë±»cache buffer chain latchËù±£»¤¡£Hash chain±¾Éí¸üÐÂÊÇͨ¹ýÆÕͨµÄÁ´±í»úÖÆ¡£¾¡¹Üÿ´Î·ÃÎʶ¼±ØÐë¼Ólatch£¬µ«ÊÇlatchºÍbuckets²¢²»ÊÇ1 to 1¶ÔÓ¦¹ØÏµ£¬Ä¬ÈϵÄֵΪInitial = buffers / 128£¬Èç¹ûËüÌ«µÍ£¬¿ÉÒÔµ÷Õû¡£ ת´¢»º³åÇøÍ·£º Alter system set events ¡®immediate trace name buffers level 1¡¯;
ÎÒµ¼³öÁËÒ»¸ö28MµÄtraceÎļþ£¬Êµ¼Ê¾ÍÊÇÒ»¸öÒ»¸öµÄBH£¬ÄÚÈݽÚÑ¡ÈçÏ£º BH (0x75bf6e40) file#: 5 rdba: 0x015ad936 (5/1759542) class: 1 ba: 0x75b36000 ÎļþºÅ5 ¿éµØÖ·0x015ad936 ÀàÐÍ 1 set: 3 blksize: 8192 bsi: 0 set-flg: 0 pwbcnt: 0 dbwrid: 0 obj: 52661 objn: 52661 tsn: 6 afn: 5 hash: [7f1e4bd8,7f1e4bd8] lru: [70ff2ce0,79404190] lru-flags: hot_buffer ckptq: [NULL] fileq: [NULL] objq: [70ff2d48,6d3e46b8] st: XCURRENT md: NULL tch: 0 flags: gotten_in_current_mode block_written_once redo_since_read LRBA: [0x0.0.0] HSCN: [0xffff.ffffffff] HSUB: [1] BH (0x767ed150) file#: 2 rdba: 0x00803c80 (2/15488) class: 38 ba: 0x765f2000 set: 3 blksize: 8192 bsi: 0 set-flg: 0 pwbcnt: 0 dbwrid: 0 obj: -1 objn: 0 tsn: 1 afn: 2 hash: [7f1e4c08,7f1e4c08] lru: [6d3e0c30,6a7f9a58] ckptq: [6a7f9a08,6cbfa3b8] fileq: [6a7f9a18,6d3e0bf0] objq: [6d3e0c98,6a7f9ac0] st: XCURRENT md: NULL tch: 1 flags: buffer_dirty gotten_in_current_mode redo_since_read LRBA: [0x5a1.9138.0] HSCN: [0x0.17e0c7d] HSUB: [4] ¡£¡£¡£ BH¾ÍÊÇbuffer header£¬ÎļþÖй²ÓÐ48723¸öBH£¬ËµÃ÷ÎÒµÄbuffer header list¹²Î¬»¤48723¸öbuffer¿éµÄÐÅÏ¢¡£ÀïÃæ±êÖ¾¿ÉÒԲο¼DSIÀ´Á˽⡣ Overview of the Buffer Cache
buffer header°üº¬ÈçÏÂÐÅÏ¢£º • BufferÔÚÄÚ´æÖеĻù±¾µØÖ· • hash chainµÄÐÅÏ¢ • others.ËüÔÚÁ´±íÖеÄλÖã¬ÖîÈçLRU,LRUW,CKPTQºÍÆäËü¡£ • µ±Ç°Óû§ºÍµÈ´ýÕßÐÅÏ¢ • ¸÷ÖÖ¶¯×÷ºÍ״̬µÄ±êÖ¾ • ¸÷ÖÖCRÇøÓò£¬ÖîÈçredo rba£¬ÎªÊµÏÖ¶àÖÖ²Ù×÷ Buffer descriptor´æÔÚÓÚPGA£¬Ëüʵ¼ÊÊôÓÚclient¡£Ëü´æ´¢µÄÏûÏ¢ÊÇclientÌṩµÄ¡£ Buffer Header
• ÃèÊö»º³åÇøµÄbuffer • ÔÚTSN, RDBA ×öhashËã·¨£¬Îªhash buckets»ñȡһ¸ö¹Ì¶¨µÄÊý×Ö • ±»Éϲã×é¼þ×öΪһÖÖÌáʾʹÓà BuffersµÄ״̬°üÀ¨£º • FREE: ¿É±»ÖØÓà • READING: ÕýÔÚ´Ó´ÅÅ̶ÁÈ¡µ½»º³åÇø • EXLCUR: µ±Ç°buffer • SHRCUR: µ±Ç°buffer • IRECOVERY: BufferÔÚ½øÐÐʵÀý¼¶»Ö¸´ • MRECOVERY: BufferÔÚ½øÐнéÖʻָ´ BuffersÄܹ»±»ÇëÇóΪNULL, NEW, CR, CRX, SHR, ºÍ EXL ģʽ¡£ Multiple Buffer Pools
Buffer pool ÓÐÈýÖÖÀàÐÍ£º
Default£ºÄ¬ÈϵijØ
Recycle£º´ó¶ÔÏ󳨣¬µ±Êý¾Ý¿â¶Áȡijһ´ó¶ÔÏóʱºò£¬¿ÉÄܵ¼ÖÂÆäËü¶ÔÏóµÄbufferÀÏ»¯£¬ËùÒÔ¿ÉÒÔ°Ñ´ó¶ÔÏóµÄ¶Áȡָ¶¨µ½recycle³ØÖУ¬±ÜÃâÓ°ÏìÆäËü¶ÔÏó¡£Õâ¸ö³ØÀïĬÈÏΪCR¿é¡£
Keep£ººÍrecycleÏà·´£¬°Ñ³£ÓöÔÏóµÄbuffer³¤¾ÃkeepÔÚ³ØÖС£ ͨ¹ýDB_KEEP_CACHE_SIZE£¨BUFFER_POOL_KEEP£©²ÎÊý¿ÉÒÔÖ¸¶¨´óС¡£
SQL> create table test (n number) storage (buffer_pool keep);
SQL> alter table test storage (buffer_pool recycle);
¹«Ê½£º
Buffers in default pool = Total number of buffers ¨C (Buffers in recycle pool + Buffers in keep pool)
¿ÉÒÔͨ¹ýV$SEGSTAT_NAME, V$SEGSTAT, ºÍ V$SEGMENT_STATISTICSÕâ¸öÈý¸öÊÓͼ½øÐжμ¶±ðµÄ¼à¿Ø¡£ LRU
Lru°üº¬Á½¸ölist£º LRUW£ºLRU Write list£¬Ò²¾ÍÊÇdirty list£¬Î¬»¤×ŵ±Ç°µÄÔà¿é¡£ LUR£º×î½ü×îÉÙʹÓà һ¸öbufferÖ»Äܱ»ÆäÖÐÒ»¸ölist cache¡£ Multiple LRU lists
LRU list ÓÉÄÚ²¿²ÎÊý_db_block_lru_latches¿ØÖÆ£¬ÎҵĻ·¾³ÏÂΪ 8¡£ÒÔǰ£¬Ö»ÓÐÒ»¸ölistÔÚcacheÀï¡£´ÓOracle8¿ªÊ¼£¬CKPTQ(checkpoint queues) ºÍFQ (file queues)±»ÒýÈë¡£Ëæ×ÅÒì²½DBWnÒýÈ룬listµÄ¹ÜÀíÒ²ËæÖ®±ä»¯¡£ÏÖÔÚÕýÈ·³Æºô£¬Ó¦¸ÃÊÇ¡°working sets,¡±£¬°üº¬¼¸¸ö²»Í¬µÄLRU lists¡£Ã¿¸öLRUÊÇÊÜcache buffers lru chain latch,±£»¤µÄ¡£
LRU Lists
ÿһ¶ÔLRU/LRUW³ÆÎªÒ»¸öworking set£¬bufferͨ¹ýÑ»·Ê¹Óõķ½Ê½·ÖÅäµ½ÕâЩworking setÖС£Ôڸ߸ºÔصĶÁÈ¡ºÍ¹ý¶àµÄLRUɨÃèÏ£¬LRU latch¿ÉÄܳÉΪһ¸öÆ¿¾±¡£´ËÍ⣬LRU latchÔÚ¶à·²¢·¢ÏµÍ³ÖÐÒ²²»ºÃºâÁ¿¡£Ó¦Îª¶à¸öCPU¿ÉÄܶ¼»áÇëÇóµ¥¶ÀµÄLRU latch¡£Í¨¹ýÉèÖÃÄÚ²¿²ÎÊý_DB_BLOCK_LRU_LATCHES£¬¿ÉÒÔ¸ÄÉÆLRUµÄ¾ºÕùÇé¿ö¡£Ã¿¸öLRU latch¶¼ÊÇÒ»¸öworking set¡£Ã¿¸öworking setÓµÓÐ×Ô¼ºµÄÁ´±í£¬¹ÜÀíÊôÓÚËüµÄbuffer¡£Èç¹ûÒ»¸ölatch²»ÄÜ·ÃÎÊ£¬ÄÇô¾Í»áתÏòÏÂÒ»¸ö£¬Ö±µ½»ñµÃÒ»¸ö³É¹¦µÄlatch¡£ÔÚʼþ¹ÜÀíÖУ¬Èç¹ûÇëÇólatchʧ°Ü£¬ÄÇômiss¾Í»áÔö¼Ó¡£LRU latchµÄÇëÇó×î³õÊÇNOWAITģʽ£¬Èç¹ûÔÚËüÇëÇóÍêËùÓÐlatch¶¼ÈÔȻûÓгɹ¦ºó£¬¾Í»á±äΪWAITģʽ¡£
½ø³Ì·ÃÎÊËùÓеÄlatchÖ±µ½Ëü»ñµÃÒ»¸öLRU latch¡£ÔÚ¶à¸öDBWRµÄ»·¾³Ï£¬Ã¿¸öDBWR¶¼ÓÐ×Ô¼ºµÄLRU/LRUW£¬Í¨¹ýÉèÖÃdb_writer_processes¿ÉÒÔ¸ü¸ÄDBWRµÄÊýÄ¿¡£
Working Sets Working Sets = DBWRs x Maximum number of buffer pools (8).
Ëü°üº¬ÈçÏÂlist£º LRU£º LRU-W£º¼Ç¼dirty buffer LRU-P£ºPing list£¨RAC£© LRU-XO:£º¶ÔÏóÖØÓÃlist£¬Õë¶ÔdropºÍtruncate LUR-XR£º¿éÖØÓÃlist Thread CKPT queue£ºÏß³ÌCKPT buffer File CKPT queue£ºÎļþCKPT buffer queue Recovery CKPT queue£ºÖ´Ðлָ´µÄ¿é Buffer Get
ÇëÇóÒ»¸öbuffer£¬Ê×ÏÈ»áÌî³äÒ»¸öbuffer descriptor£¬²½ÖèÈçÏ£º
• Ìî³äÒ»¸öbuffer descriptor • Ö¸¶¨bufferµÄÕ¼ÓÐģʽ • »º´æÊý¾Ý¿é µäÐ͵Äbuffer descriptor±£»¤ÈçÏÂÐÅÏ¢£º • Full RDBA • Class • Object# • Ö¸Ïòbuffer headerµÄÌáʾ • Pin (buffer state object with which to associate it) • Examination function (if CR or CRX) • If multiblock read, then the number of buffers to be read Getting Current Buffers
ѰÕÒcurrent buffers: 1. Scan the hash chain to which the RDBA maps. ɨÃèhash chain£¬»ñÈ¡RDBA maps 2. Ϊÿ¸öbufferµÄchain£º - ºöÂÔRDBA²»Æ¥ÅäµÄbuffer - µÈ´ýREADING buffer È»ºó·µ»ØËüÃÇ - Ìø¹ýCR (consistent read) buffers - Èç¹ûCUR (current) buffer ´¦ÓÚcompatibleģʽ£¬Ôò¿ÉʹÓà - ·ñÔò£¬Èç¹ûÊÇCR״̬¶ÔÏó ¨C¸´ÖÆÒ»¸öCR È»ºó ´´½¨Ò»¸öеÄEXLCUR ¸±±¾ ¨C »òÕߵȴýµ±Ç°µÄbufferÊÍ·Å - Èç¹ûûÓÐÕÒµ½buffer£¬Ôò´ÓÓ²Å̶ÁÈ¡ 2. ¹ØÁªstate objectµ½buffer header 3. ·µ»ØÖ¸ÏòÊý¾ÝÇøÓò Buffer Management
• Buffers³õʼ»¯hashµ½ LRU-AUX list.
¨C BuffersµÈ´ý±»Ê¹ÓÃ
¨C λÓÚLRUβ²¿µÄBuffers ±»DBWRɨÃ裬¼ìÑéÄÜ·ñÇå³ý
• Ò»°ãÊ×ÏÈɨÃèLRU-AUX.
• ·ÖÅä¿ÕÏпռäºó£¬Òƶ¯µ½MAIN listµÄÖв¿.
• DBWR ɨÃè LRU-MAIN È»ºóÒÆ¶¯Ôà¿éµ½LRUW-MAIN.
write-outÒ»¸öÀÏ»¯µÄbufferµÄÁ÷³ÌÈçÏ£º 1. Buffer×î³õÊÇÔÚLRU-AUX. 2. ÒÆ¶¯µ½LRU-MAIN. 3. ±»Ð޸ĺó(ÊÍ·ÅãÅ),ÒÆ³öLRUW-MAIN. DBWRÉÔºó°ÑËüÒÆ¶¯µ½LRUW-AUX. 4. ³öÁе½I/O ²Û ͨ¹ý kcbbxsv£¨OracleÄÚ²¿³ÌÐòÄ£¿éÃû³Æ£©. 5. Queue writes from I/O slots ͨ¹ý kcfqueuewr. 6. дÈëdisk ͨ¹ýkcfdowr. 7. Íê³É
Touch µÄÊýÁ¿
ÔÙ¿´Ö®Ç°µÄdump buffer header£¬Ä³Ò»¸öbhÆäÖеÄtchΪ50
BH (0x743edb00) file#: 6 rdba: 0x0182fcf1 (6/195825) class: 1 ba: 0x74206000
set: 3 blksize: 8192 bsi: 0 set-flg: 0 pwbcnt: 0
dbwrid: 0 obj: 52726 objn: 52726 tsn: 7 afn: 6
hash: [7f217f60,6d7e7070] lru: [723ea068,6afe2d20]
ckptq: [69ffa798,72ff67a8] fileq: [747e5498,6ebec9d0] objq: [733de6d0,677f7308]
st: XCURRENT md: NULL tch: 50
flags: buffer_dirty gotten_in_current_mode block_written_once
redo_since_read
LRBA: [0x5a1.9bc8.0] HSCN: [0x0.17e16b4] HSUB: [2]
Ò²¿ÉÒÔͨ¹ýÈçÏÂsql²éѯij¸öbufferµÄtouchÊý
SELECT TCH FROM SYS.X$BH WHERE FILE#=5 AND DBABLK=195825;
µ±Ò»¸öbuffer±»touchµ½»º´æÖУ¬touchÊýÁ¿¾Í»áÔö¼Ó1¡£ Buffer Cache Fixed Tables
• X$KCBBF: Buffer descriptor ״̬¶ÔÏóºÍ±êÖ¾ • X$KCBWH: ÃèÊöwhere/why buffer getsµÄͳ¼Æ • X$KCBSW: why/where buffer getsµÄͳ¼Æ. Only WHY0 is used. • X$KCBBMC: Map count per buffer when _DB_BLOCK_CACHE_MAP is TRUE • X$KCBBHS: DBWR histogram statistics, enabled if _DB_WRITER_HISTOGRAM_STATISTICS is TRUE • X$KCBBES: DBWR event statistics. • X$KCBWDS: Working set descriptor. • V$WAITSTAT on X$KCBWAIT • V$BUFFER_POOL on X$KCBWBPD Buffer Cache Latches
Cache buffers chains
Ç°ÃæÒѾ½éÉܹý£¬¿é±»hashΪһ¸öÁ´£¬»ùÓÚÒ»¶Ô<DBA,class>¡£Ã¿Ò»¸öchain±»Ò»¸ö×Ócache buffers chains±£»¤£¬·ÀÖ¹ÔÚɨÃè¹ý³Ì±»¸Ä±ä¡£ Cache buffers LRU chain
±£»¤LRUÁ´¡£½ø³ÌÐèÒª»ñµÃlatch£¬µ±ËûÃÇÐèÒªÒÆ¶¯bufferµ½Ä³¸öLUR setµÄʱºò¡£ÔÚOracle serverÀïÃæ£¬ËüÊÇ×ælatchÖ®Ò»¡£ÎªÁ˼õÉÙ¾ºÕù£¬¿ÉÒÔÉèÖöà¸ö_DB_BLOCK_LRU_LATCHES Checkpoint queue latch
ÔÚ½ø³Ì°Ñbuffer·ÅÔÚcheckpoint queue֮ǰ£¬Ëü±ØÐëÈ·±£queueûÓÐÕýÔÚ±»Ê¹Óá£ÕâÓеãºÍLRUlist ÀàËÆ¡£
Buffer Cacheµ÷ÓÅ
µ÷Õûbuffer cache °üº¬ I/OºÍDBWRµ÷ÓÅ
• ½ÏºÃµÄ»º´æÃüÖÐÂÊ(Ò»°ã> 90%).
• Ïû³ýʹÓûº³åÇø¸ßËÙ»º´æÖ»ÒªÓпÉÄÜ.
• ʹÓÃÖ±½ÓI/O (direct loader, direct insert).
¨C SORT_MULTIBLOCK_READ_COUNT
ͨ¹ýÒÔÏÂSQL¿ÉÒÔ»ñµÃ¶Ôbuffer cache sizeµÄ½¨Òé
SELECT size_for_estimate,buffers_for_estimate,estd_physical_read_factor,estd_physical_reads FROM v$db_cache_advice t WHERE NAME='DEFAULT' AND advice_status='ON' AND block_size=(SELECT Value FROM v$parameter WHERE NAME='db_block_size');
• ÓÐÁ½¸öÖ÷ÒªµÄʼþµ¼Ö´óÁ¿µÄwait timeºÍÐÔÄÜÆ¿¾±£º
¨C Buffer busy waits
¨C Free buffer waits
• Ò»°ãÊ×Ïȵ÷Õû×î¸ßµÄµÈ´ýʼþ.
select * from v$system_event order by time_waited DESC
Buffer Busy Waits
¨C ¶à¸ö»á»°¶ÁÈ¡ÏàͬµÄ¿é
¨C ¶à¸ö»á»°µÈ´ý¸Ä±äÏàͬµÄ¿é
P3 ×Ö¶ÎÔÚV$SESSION_WAIT ÊÇÔÒòcode.
V$WAITSTAT ÏÔʾÿÖÖÀàÐ͵ĿéµÄwait.
X$KCBFWAIT ÏÔʾÿ¸öÎļþµÄwait
½¨ÒéµÄ·½·¨:
• ²éѯV$WAITSTAT ¹Û²ìwaits µÄ×ßÊÆ.
• ²éѯ X$KCBFWAIT ·¢ÏÖ×îæµÄÎļþ.
• ÁªºÏ½á¹û·¢ÏÖÊÇÄĸö¶ÔÏóæµ.
SELECT count, file#, name FROM x$kcbfwait, v$datafile WHERE indx + 1 = file# ORDER BY count
×îÓпÉÄÜ·¢ÉúµÈ´ýµÄ¿éÀàÐÍ:
¶Î Header
Problem: ûÓÐ×ã¹»µÄfree lists ºÍ´óÁ¿µÄinserts£¨10g ASSMÓÐËù¸Ä½ø£© Solution: Ôö¼Ó¸ü¶àµÄfree lists ºÍ free lists ×é Problem: HWM ¾³£±ä»¯ Solution: Ôö´ó _BUMP_HIGHWATER_MARK_COUNT Problem: Extent size̫С, ±íÔö¼ÓÌ«¿ì Solution: Ôö¼Ó extent sizes
Data Blocks
Problem: ÿ¸öblockÐÐÌ«¶à
Solution 1: ¼õÉÙrows£¬Í¨¹ý¸Ä±äpctfree/pctused
Solution 2: ¼õС DB_BLOCK_SIZE
Problem: Right-hand indexes µ¼Ö ²åÈëÏàͬµÄblock Solution: ʹÓ÷´Ïòkey indexes »òÕßÖØ½¨ index
Free Buffer Waits
• ʲôʱºò·¢Éú:
µ±Òƶ¯Ôàbuffer¹ýÈ¥µÄʱºò£¬LRUW list ÂúÁË
DBWR ²»ÄÜÇå³ýLRUW ×ã¹»¿ì
• ½â¾ö·½·¨:
Ôö¼ÓÅúÁ¿Ð´µÄ´óС
Ìõ´ø»¯´ÅÅÌ, ʹµÃDBWR ¸ü¿ì
ʹÓÃÒì²½ I/O
¼õÉÙLRU listsÊýÁ¿£¨×öΪ×îºó°ì·¨£¬¿ÉÄܵ¼ÖÂlatch¾ºÕù£¬ÒòΪûÓÐ×ã¹»µÄlatch£©
³õʼ»¯²ÎÊý
ÏÂÃæÊÇÓ°Ïìbuffer cacheµÄÄÚ²¿²ÎÊý¡£
• _DB_BLOCK_HASH_BUCKETS: block hash bucketsµÄÊýÁ¿ (ĬÈÏÊÇDB_CACHE_SIZE/4)
• _DB_BLOCK_MAX_SCAN_CNT: ѰÕÒ¿ÕÏÐbufferµÄ×î´ó³¢ÊÔ´ÎÊý
• _DB_WRITER_SCAN_DEPTH: DBWRѰÕÒÔà¿éµÄµÄɨÃèÉî¶È
• _DB_BLOCK_CACHE_CLONE: È¡µÄʱºò£¬¸´ÖÆÒ»¸ö¸±±¾ (µ÷ÊÔÓÃ)
• _DB_BLOCK_CACHE_MAP: Map/unmap and track reference counts on blocks (for debugging purposes only)
• _DB_BLOCK_MAX_CR_DBA: Maximum allowed number of CR buffers per dba
• _DB_WRITER_HISTOGRAM_STATISTICS: Maintain DBWR histogram statistics in X$KCBBHS
• _DB_BLOCK_MED_PRIORITY_BATCH_SIZE: Percentage of write batch used for medium priority checkpoints
• _DB_BLOCK_HI_PRIORITY_BATCH_SIZE: Percentage of write batch used for high priority checkpoints
• _DB_PERCENT_HOT_DEFAULT: Percent of default buffer pool considered hot
• _DB_PERCENT_HOT_KEEP: Percent of keep buffer pool considered hot
• _DB_PERCENT_HOT_RECYCLE: Percent of recycle buffer pool considered hot
• _DB_AGING_HOT_CRITERIA: Touch count which sends a buffer to head of replacement list
• _DB_AGING_COOL_COUNT: Touch count set when buffer cooled
• _DB_AGING_TOUCH_TIME: Touch count which sends a buffer to head of replacement list
• _DB_AGING_FREEZE_CR: Make CR buffers always be too cold to keep in cache
• _DB_AGING_STAY_COUNT: µ±bufferÒÆ¶¯µ½LURheaderµÄTouch count
• _DB_BLOCK_CACHE_PROTECT: ±£»¤ database blocks (µ÷ÊÔÓÃ)
• _DB_BLOCK_HASH_LATCHES: database block hash latchesµÄÊýÄ¿
• _DB_HANDLES: ͬʱÄÜ·¢ÉúµÄbuffer²Ù×÷£¬ÏµÍ³¼¶
• _DB_HANDLES_CACHED: ÿ¸ö½ø³Ì»º´æµÄBuffer ¾ä±ú
• _DB_LARGE_DIRTY_QUEUE: Ôà¿é¶ÓÁÐÇ¿ÖÆÐ´Èë´ÅÅ̵ÄÃÅÏÞ
• _DB_WRITER_MAX_WRITES: ×î´óµÄDB Writer I/Os
• _DB_WRITER_CHUNK_WRITES: DBWR ³¢ÊÔдµÈ´ý´ÎÊý
• _DBWR_ASYNC_IO: ¼¤»î DBWR Ò첽д
• _DBWR_TRACING: ¼¤»î DBWR ×·×Ù
• _DBWR_SCAN_INTERVAL: DBWR scan interval
• _TRACE_BUFFER_FLUSHES: ×·×Ùbuffer flushes Èç¹ûotrace cacheIOʼþ±»ÉèÖÃ
• _TRACE_MULTI_BLOCK_READS: ×·×Ù multi-block ¶Á£¬Èç¹ûotrace cacheIOʼþ±»ÉèÖÃ
• _TRACE_CR_BUFFER_CREATES: ×·×Ù CR buffer ´´½¨£¬Èç¹û otrace cacheIO ʼþ±»ÉèÖÃ
ÆäËü¼¼ÇÉ
• ʹÓöà¸öLRU latchµÄʱºò£¬Ê¹Óöà¸öDBWR½ø³Ì¡£
• ¾¡Á¿Ê¹LRU latch¶ªÊ§ÂÊСÓÚ1£¥
• ʹÓÃasynchronous I/O »òÕß DBWR I/O Slaves.
• ¼õÉÙ buffer cache load ͨ¹ýʹÓÃdirect I/O.
|