latch free等待事件

2021-08-26 08:27:15 字數 2382 閱讀 1231

latch是一種保護記憶體結構的輕量級鎖。程序在等待當前繁忙latch時(此latch被其他程序持有),會產生此等待事件。在10g之前latch free包含了所有latch等待型別。在10g及以後,相關latch等待事件更容易分辨,比如latch: shared pool。然而還是有一些latch等待還以latch free等待事件表達。

如11.2.0.3環境

v$latchname中的資訊就是從v$latch中獲取的,v$latch和v$latchname的記錄一一對應。

該檢視描述了已latch name分組的更包括父子latch的資訊,parent latch和child latch資訊分別在 v$latch_parent 和v$latch_children中。

我們通過查詢一條記錄來描述這個檢視的字段含義

latch編號為187,name為redo allocation,也就是說這是乙個關於redo分配的latch,latch address:0700000000021070,latch hash:999804931,latch等級為5(latch等級在後面做介紹),willing-to-wait 模式的latch請求次數gets,willing-to-wait 模式且請求者需要等待的次數為misses,也就是說misses肯定小於等於gets。willing-to-wait的latch在等待latch時,請求者處於sleeping狀態的請求次數。那麼gets>=misses>=sleeps。申請latch時直接獲取到latch資源沒有等待的次數immediate_gets。申請latch時直接失敗immediate_misses。willing-to-wait首次申請latch失敗,在spin時成功的次數為spin_gets。wait_time等待latch的時間,單位微秒。waiters_woken,waits_holding_latch已在舊版本中不可用。

可以看出latch的總申請次數應該是:gets+immediate_gets+immediate_misses。

那麼平均latch平均響應時間應是:

wait_time /( gets+immediate_gets+immediate_misses)。

比較奇怪的是sleep[1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11]這些字段,剛開始看上去令人費解,其實就是直方圖。

官方文件中描述為:這些列只在oracle的較早版本有效,現在這些列已經不收集資料了,全部顯示為0。可以通過v$event_histogram 檢視中搜尋關鍵字latch free或latch:%檢視。

v$latch檢視看上去字段很多,但是可用的並不多。

先看看這個檢視描述

dba_hist_latch_name沒有snap_id,說明該檢視其實不是乙個真正的hist檢視,官方文件中描述有點不太合適

其實把v$latchname和dba_hist_latch_name看成是靜態檢視即可,與v$statname類似。不同版本的資料庫latch會有所不同,比如11.2.0.3和11.2.0.4中的latch數量就不同,11.2.0.3中為553個,11.2.0.4中未582個。

dba_hist_latch與快照就相關了,該檢視收集的是v$latch的資訊,欄位與v$latch類似。值得注意的是,dba_hist_latch記錄了快照內的latch申請資訊等,但是不是每次申請latch都會造成latch free等待。

waitevent: "latch free" reference note (文件id 34576.1)

resolving issues where "latch free" wait contention causes performance degradation (文件id 1476736.1)

等待事件 buffer busy waits

事件引數說明 事件號 145 事件名 buffer busy waits 引數一 file 引數二 block 引數三 9i 原因碼,10g block class 事件說明 一 oracle會話正在等待pin住乙個緩衝區,會話必須在讀取或修改緩衝區之前將該緩衝區pin住。二 在任何時侯只有乙個程序...

GC Blocks Lost等待事件

在oracle rac環境中,無論我們從awr自動負載效能報告 statspack或者grid control中都可以找到oracle資料庫軟體所收集的全域性快取工作負載統計資訊 global cache work load statistics 其中就包含了全域性快取塊丟失 global cach...

等待事件 wait event

衡量資料庫狀況,優化資料庫等 當乙個程序連線到資料庫後,程序所經歷的種種等待就開始被記錄,並且通過一系列的效能檢視進行展示,通過等待事件使用者可以很快發現資料庫的效能瓶頸,從而進行針對性能的優化和分析.v event name oracle 等待事件主要分兩類 空閒等待 idle 和 非空閒等待 n...