共享池之六:shared pool latch/ library cache latch /lock pin 簡介
latch:library cache --desc v$librarycache;
latch:library cache用於保護hash bucket.
library cache lock保護HANDLE。
library cache pin保護library cache object--LCO.
從10G開始,library cache lock和library cache pin被MUTEX部分取代。暫時不討論MUTEX。
latch:library cache的數量:
SYS@ bys3>select name from v$latch_children where name like '%librarycache%';
隱含引數:_kgl_bucket_count,預設值大於等於系統中CPU個數的最小素數-不超過67。查詢時會顯示為0--BUG。
一個latch:library cache管理著多個librarycache buckets.
latch:library cache多是因為區域性latch:library cache訪問比較頻繁,增大其數量並不能解決。
如果shared pool過小,也會引發librarycache latch競爭,進而引起shared pool latch競爭---參考AWR--Shared Pool Advisory
具有高version_count的SQL也容易導致latch:library cache,因為在搜尋到子LCO前會一直持有latch:library cache。
#########
library cache lock保護HANDLE--父遊標和子游標的handle
在硬解析時,需要以獨佔模式(EXCLUSIVE)持有librarycache lock和library cache pin。
程式訪問LCO,首先需要在latch:librarycache的保護下獲得library cache lock,才能訪問和修改HANDLE;然後獲取library cache pin,才能訪問和LCO。
子游標的HANDLE和LCO的訪問和上面一樣。
MODE有三類: null 1;shared 2;exclusive 3;
null 1;空鎖:空鎖和獨佔鎖互相不阻塞,主要起“標記”目的。標記物件正在使用中,或者標記物件以後還會用。保證物件記憶體不會被覆蓋或釋放。--可以執行三次,檢視
select kglhdadr,kglhdpar,kglhdlmd,kglobhs0,kglobhd0,kglobhd6 from x$kglob wherekglnaobj like 'select * from aaa';
檢視遊標是否關閉。執行不大於3次,不會快取,如有其它語句,則將未快取的清空。
select * from bys.dept 執行三次,
SYS@ bys3>select kglhdadr,kglhdpar,kglhdlmd,kglhdpmd,kglobhs0,kglobhd0,kglobhd6from x$kglob where kglnaobj like 'select * from bys.dept';
KGLHDADR KGLHDPAR KGLHDLMD KGLHDPMD KGLOBHS0 KGLOBHD0 KGLOBHD6
-------- -------- ---------- ---------- ---------- -------- --------
2499B1C0 24965DB4 1 0 4372 246C5CE0 252F0DD0
----被快取的子游標,
24965DB4 24965DB4 1 0 4500 23CC848C 00
被快取的遊標:當記憶體不足時,子游標堆6可以被覆蓋,其它HADNLE等不可被覆蓋。--原因是:重建執行計劃的資訊--父堆0,子堆0等都有可以快速重建執行計劃-也算硬解析,但是消耗資源比正常硬解析少。
等待事件的P1 P2 P3分別是:
P1=HANDLE ADDRESS
P2=LOCK/PIN ADDRESS
PS=MODE*100+NAMESPACE
NAMESPACE分以下型別:
1.SQL AREA
2.TABLE/PROCEDURE/FUNCTION/PACKAGE HEADER
3.PACKAGE BADY
4.TRIGGER
5.INDEX
6.CLUSETER
7.PIPE
13.JAVA SOURCE
14.JAVE RESOURCE
32.JAVA DATA
常見的library cache lock持有模式的情況:
以獨佔持有的語句是:
ALTER TABLE……,
CREATE OR REPLACE PROCEDURE;
共享模式持有:SQL解析階段
在SQL執行階段,由共享模式轉換為NULL。
定位引起library cache lock等待事件的語句:
select b.sid from x$kgllk a,v$session b where a.kgllkhdl in (select p1raw fromv$session_wait where wait_time=0 and event='library cache lock') and a.kgllkmod<>0and b.saddr=a.kgllkuse;
常見的library cache pin持有模式的情況:
以獨佔模式持有的是:
ALTER PROCEDURE ..COMPLE;
硬解析產生執行計劃過程中需要
以共享模式持有的是:SQL執行階段、PROCEDURE執行階段。
定位引起library cache pin等待事件的會話:
select a.sid from x$kglpn b,v$session a where b.kglpnhdl in (select c.p1rawfrom v$session_wait c where c.wait_time=0 and c.event like 'library cachepin%') and b.kglpnmod<>0 and a.saddr=b.kglpnuse;
相關文章
- 優化Shared Pool Latch與Library Cache Latch競爭優化
- 深入理解shared pool共享池之library cache的library cache pin系列三
- 深入理解shared pool共享池之library cache的library cache lock系列四
- Shared pool的library cache lock/pin及硬解析
- latch:library cache lock等待事件事件
- shared pool library cache latch 競爭優化辦法優化
- Shared Pool優化和Library Cache Latch衝突優化優化
- ORACLE LOCK,LATCH,PINOracle
- 深入理解shared pool共享池之library cache系列一
- 深入理解shared pool共享池之library cache系列二
- 由最長SQL想到的Latch Free( Library Cache Pin/Lock)整理~~草稿SQL
- sql version count引發cursor:pin s wait x及library cache latch library cache lockSQLAI
- 故障排除:Shared Pool優化和Library Cache Latch衝突優化優化
- 【鎖】Latch、lock、 pin的區別
- latch:shared pool的一點理解
- Library Cache Pin 及 Library Cache Lock分析
- library cache lock和library cache pin理解
- [20210520]11g shared pool latch與library cache mutex的簡單探究.txtMutex
- [20210521]11g shared pool latch與library cache mutex的簡單探究4.txtMutex
- 轉_診斷latch:shared pool等待事件事件
- 【每日一摩斯】-Shared Pool優化和Library Cache Latch衝突優化 (1523934.1)-系列6優化
- 【每日一摩斯】-Shared Pool優化和Library Cache Latch衝突優化 (1523934.1)-系列5優化
- 【每日一摩斯】-Shared Pool優化和Library Cache Latch衝突優化 (1523934.1)-系列4優化
- 【每日一摩斯】-Shared Pool優化和Library Cache Latch衝突優化 (1523934.1)-系列3優化
- 【每日一摩斯】-Shared Pool優化和Library Cache Latch衝突優化 (1523934.1)-系列2優化
- 【每日一摩斯】-Shared Pool優化和Library Cache Latch衝突優化 (1523934.1)-系列1優化
- oracle library cache之library cache lock_library cache pin wait event釋義OracleAI
- cache buffer chain latch只讀共享?AI
- [20210520]11g shared pool latch與library cache mutex的簡單探究3.txtMutex
- enq:Library cache lock/pin等待事件ENQ事件
- Library cache lock/pin詳解(轉)
- 深入理解shared pool共享池空間及library cache分配之ora-4031 系列一
- library cache pin和library cache lock的診斷分析
- library cache lock和library cache pin區別總結
- Oracle Latch & LockOracle
- 定位Library Cache pin,Library Cache lock等待的解決方法
- zt_如何平面解決library cache lock和library cache pin
- 【筆記】lock and latch筆記