row cache objects latch研究

yezhibin發表於2010-06-18
1、row cache objects latch包含多個children latch

select child#, gets, misses, sleeps
from v$latch_children
where name='row cache objects'
order by 1;         
輸出結果:
CHILD#       GETS        MISSES     SLEEPS
-------------- -------------- --------------- ----------
     (略)
         7       24430682      14976          4
     ( 略)

2、通過v$fixed_view_definition比對v$rowcache和x$kqrst

v$rowcache             x$kqrst                                       描述
 -----------------    -----------------------------------       ------------------------
 CACHE#                KQRSTCID                               ROWCACHE ID編號
 TYPE                      decode(KQRSTTYP,1,
                                 'PARENT','SUBORDINATE')   rowcache型別
 SUBORDINATE#  decode(KQRSTTYP,2,
                                  KQRSTSNO,null),                    subordinate#編號
 PARAMETER          KQRSTTXT                               引數名稱,其決定
                                                                                       rowcache記錄數量
 COUNT                    KQRSTCSZ                              在cache中各個引數的記錄數
 USAGE                     KQRSTUSG,                            記錄的有效數
 FIXED                        KQRSTFCS                             被修復的記錄數
 GETS                        KQRSTGRQ,                             資料物件請求總數量
 GETMISSES            KQRSTGMI,                               資料物件請求miss數量
 SCANS                     KQRSTSRQ,                             scan請求數量
 SCANMISSES          KQRSTSMI,                              scan失敗次數
 SCANCOMPLETES KQRSTSCO,                           SUBORDINATE記錄列表,完全
                                                                                        scan掃描次數列表
 MODIFICATIONS      KQRSTMRQ,                           inserts, delete, update次數
 FLUSHES                  KQRSTMFL,                            flush到磁碟的次數
 DLM_REQUESTS     KQRSTILR,                             DLM請求次數
 DLM_CONFLICTS     KQRSTIFR,                             DLM衝突次數
 DLM_RELEASES       KQRSTISR                             DLM釋放次數
                                        KQRSTCLN                           latch編號
                                        KQRSTOSZ                            未知
KQRSTCLN對應child#,所以我們能知道,一個或多個child#管理單個row cache

3、檢視每個child#資訊

select  kqrstcln child#,  kqrsttxt RowCacheName from x$kqrst
order by 1;

LD# ROWCACHENAME
---------- --------------------------------
         略
         7 dc_users
         7 dc_users
         7 dc_users
         7 dc_users
所以我們知道row cache objects latch的child#7是管理dc_users

4、如果出現latch出現sleeps值比較大,則可以通過x$kqrsts中找出row cachename,然後結合檢視miss的位置,大概定位是row cache latch競爭原因

select "WHERE", sleep_count, location
from v$latch_misses
where parent_name='row cache objects'
and sleep_count>0;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/354732/viewspace-665630/,如需轉載,請註明出處,否則將追究法律責任。

相關文章