enq: KO - fast object checkpoint 等待事件與 direct path read - 2
查詢發現等待事件 enq: KO - fast object checkpoint 發生的原因是:當進行TABLE FULL SCAN (全表掃描) 或並行查詢整個segment時, 11g下,因_adaptive_direct_read 預設為true, 達到閥值_small_table_threshold大小的表會被認為是大表,讀取資料時不會讀入SGA , 而是直接路徑讀取(direct path read),而direct path read 是需要將資料從磁碟讀取到各session 的PGA中,因為不是讀入SGA, 所以讀取這些表之前需要在所有資料庫節點(如果是RAC)觸發object level checkpoint,將這些表被修改過的dirty buffer寫入磁碟,以保證讀取資料的一致性 。
SQL> select ksppinm, ksppstvl from x$ksppi pi, x$ksppcv cv where cv.indx = pi.indx and pi.ksppinm like '_adaptive_direct_read';
KSPPINM KSPPSTVL
--------- ---------------------
_adaptive_direct_read TRUE
SQL> select ksppinm, ksppstvl from x$ksppi pi, x$ksppcv cv where cv.indx = pi.indx and pi.ksppinm like '_small_table_threshold';
KSPPINM KSPPSTVL
--------- ---------------------
_small_table_threshold 15083 -- (單位為blocks,每個版本對應值貌似都不同)
查詢SQL執行計劃 :
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('5jctyad1z1s6a',0,'all iostats last'));
或
select * from table(dbms_xplan.display_awr('5jctyad1z1s6a')) ;
發現有四個表做全表掃描,這幾個表的大小(block數目)顯然大於設定的_small_table_threshold閥值,所以走了direct path read, 讀取資料到PGA之前需要觸發object level checkpoint去將這四個表在buffer cache中的dirty buffer寫入磁碟,等待checkpoint完成。相當於 ckpt 或 dbwr 阻塞了讀(讀入到SGA)。這時,enq: KO - fast object checkpoint 等待事件發生。 如果發生這種等待事件,一個簡單的查詢可能也會變得非常慢。
SQL> select ksppinm, ksppstvl from x$ksppi pi, x$ksppcv cv where cv.indx = pi.indx and pi.ksppinm like '_adaptive_direct_read';
KSPPINM KSPPSTVL
--------- ---------------------
_adaptive_direct_read TRUE
SQL> select ksppinm, ksppstvl from x$ksppi pi, x$ksppcv cv where cv.indx = pi.indx and pi.ksppinm like '_small_table_threshold';
KSPPINM KSPPSTVL
--------- ---------------------
_small_table_threshold 15083 -- (單位為blocks,每個版本對應值貌似都不同)
查詢SQL執行計劃 :
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('5jctyad1z1s6a',0,'all iostats last'));
或
select * from table(dbms_xplan.display_awr('5jctyad1z1s6a')) ;
發現有四個表做全表掃描,這幾個表的大小(block數目)顯然大於設定的_small_table_threshold閥值,所以走了direct path read, 讀取資料到PGA之前需要觸發object level checkpoint去將這四個表在buffer cache中的dirty buffer寫入磁碟,等待checkpoint完成。相當於 ckpt 或 dbwr 阻塞了讀(讀入到SGA)。這時,enq: KO - fast object checkpoint 等待事件發生。 如果發生這種等待事件,一個簡單的查詢可能也會變得非常慢。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-1387117/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- enq: KO - fast object checkpoint 等待事件與 direct path read - 1ENQASTObject事件
- enq: KO - fast object checkpoint 等待事件與 direct path read - 3ENQASTObject事件
- enq: RO fast object reuse 和 enq: KO fast object checkpointENQASTObject
- 11.2使用KEEP池導致ENQ: KO - Fast Object Checkpoint等待ENQASTObject
- 針對enq: KO - fast object checkpoint的優化ENQASTObject優化
- direct path read/read temp等待事件事件
- [20210527]enq KO - fast object checkpoint Final Blocker.txtENQASTObjectBloC
- 【TUNE_ORACLE】等待事件之IO等待“direct path read”Oracle事件
- 記一次enq: RO - fast object reuse等待事件ENQASTObject事件
- Oracle常見等待事件之direct path read/writeOracle事件
- Oracle11gR2後direct path read等待事件的改變Oracle事件
- Oracle 11g direct path read 等待事件的理解Oracle事件
- 【效能調整】等待事件(六) direct path read&write事件
- oracle等待事件2構造一個DB File Sequential Read等待事件和構造一個Direct Path ReadOracle事件
- direct path read/write等待的分析
- ORACLE等待事件:direct path writeOracle事件
- 11g direct path read 等待事件的實驗分析事件
- 11g direct path read 等待事件的初步探討事件
- 等待事件 direct path read 與11g中的非並行直接讀事件並行
- 11g中direct path read事件等待很高的一個案例事件
- 解決direct path read 與 direct path write問題
- Oracle中的direct path read事件(轉)Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“direct path write”Oracle事件
- 【TUNE_ORACLE】等待事件之IO等待“direct path write temp”Oracle事件
- enq: RO - fast object reuseENQASTObject
- zt_direct path read temp等待如何解決_wait eventAI
- oracle等待事件3構造一個Direct Path write等待事件和構造一個Log File Sync等待事件Oracle事件
- 等待事件db file sequential read、db file scattered read和direct read的區別事件
- enq: WF - contention等待事件ENQ事件
- enq: CF - contention 等待事件ENQ事件
- enq: TS - contention 等待事件ENQ事件
- 一次direct path read 故障處理
- 等待事件之enq: HW - contention事件ENQ
- enq:TM-contention事件等待ENQ事件
- 消除 enq: DX - contention 等待事件ENQ事件
- Oracle direct path read相關隱含引數Oracle
- read by other session等待事件Session事件
- 等待事件:read by other session事件Session