enq: RO fast object reuse 和 enq: KO fast object checkpoint

哎呀我的天吶發表於2015-04-18

 enq: RO fast object reuse 

 它是用於同步前臺程式與後臺程式(dbwr, ckpt)的。當你truncate或者drop一個物件的時候,前臺程式,首先獲取一個RO enq, 以排它模式。

CKPT程式,請求單物件checkpoint,並請求DBWr寫髒塊,並把buffer裡的塊無效化。DBWR把所有的塊寫完以後, 前臺程式釋放RO enq,這是它使用的過程。


如果有多個session同時truncate/drop就會發生爭用。


 truncate, drop之前要把buffer pool刷出去。
D111 2015/4/18 18:55:07

是的
上海2015/4/18 18:55:15

 _db_fast_obj_truncate把這個引數關掉,truncate時,這個行為就沒了。
D111- 2015/4/18 18:55:17

所以 ddl操作也是比較費資源的
上海 2015/4/18 18:55:28

要刷出去就要加RO enq.
D111 2015/4/18 18:55:53


 直路徑讀之前,也有類似的行為。。。
上海2015/4/18 18:59:11

enq: KO - fast object checkpoint 

D103 2015/4/18 19:00:45

恩 研究研究
上海 2015/4/18 19:01:12

在direct path read之前,也要把髒塊先寫進資料檔案, 如果ckpt,dbwr不夠快等原因,就會有KO的等待。
上海2015/4/18 19:02:13

SQL> r
  1* select description from v$lock_type where type='KO'

DESCRIPTION
--------------------------------------------------------------------------------
Coordinates checkpointing of multiple objects

D103- 2015/4/18 19:02:18

direct path read 之前為什麼要先寫 髒塊呢

D103 2015/4/18 19:02:28

以為要從磁碟 讀 最新的 是吧
D1112015/4/18 19:02:34

因為不走 buffer cache
上海 2015/4/18 19:02:43

你想,它從資料檔案直接讀。。。不寫髒塊,那不讀錯了呀。
上海 2015/4/18 19:02:46

是的。

D103 2015/4/18 19:02:58
明白

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

相關文章