Oracle 採用多層次鎖機制保護內存結構與內部數據一致性,對用戶透明。核心三類:Latch(閂鎖)、Mutex(互斥鎖)、Internal Locks(內部鎖),保護粒度與持有時間遞增。
保護 SGA 中共享內存結構(如共用池、Library Cache、Buffer Cache 鏈表)。適用場景:
特性:
典型競爭熱點:硬解析爭用 Library Cache Latch、共用池內存分配爭用 Shared Pool Latch。V$LATCH 記錄獲取次數、等待時間等統計。
保護單一內存對象(如單個 Library Cache Bucket),解決 Latch 保護範圍過大導致的誤傷競爭。
10g 起大量引入 Mutex 替代 Library Cache Latch,11g 進一步擴展。
保護數據字典緩存條目。解析時持有共享鎖(防止對象定義變更),DDL 完成時持有排他鎖。持有時間極短。
此類鎖代表文件狀態,持有時間長(如實例啟動期間持續)。
V$LATCH、V$LATCH_CHILDREN:Latch 統計與子閂鎖熱點。V$MUTEX_SLEEP、V$MUTEX_SLEEP_HISTORY:Mutex 等待分析。V$ENQUEUE_LOCK、V$RESOURCE、V$LOCK:內部鎖(Enqueue)視圖。理解三類鎖的層級、粒度、持有特性,是解決高並發「Library Cache: Mutex X」、「Latch: Cache Buffers Chains」、「Enqueue: TX - Row Lock Contention」等頂級等待事件的理論基石。