oracle latch_自譯文_(1)
latch學習
低階的機制,用於序列級訪問控制對於比如cache buffer header等記憶體結構
1,僅僅是一種簡單的記憶體結構
2,通常大小在100-200b
3,被封裝成一個個小型的狀態物件結構
4,固定在固定sga(父latch)或者共享池中
5,它是透過硬體原子cas(比較與交換)的指令來實現,比如在intel平臺是lock CMPXCHG
6,從oracle8後開始共享
用於一些高階ops特性
比如,當檢查buffer chain時,用於cache buffers chains latch的獲取
什麼是latch 競爭
我想得到一個latch,但此時已經有人在使用或佔用它了
以上情況可分兩種分支:
如果gets(請求)是採用非等待模式,返回給呼叫者失敗資訊
如果gets(請求)採用樂意等待模式,繼續嘗試gets
多次嘗試gets,這種情況就叫spinning
仍舊得不到latch,就沉睡一些時間
在latch 世界中,10ms是一個相當長的時間
_max_exponential_sleep
_max_sleep_holding_latch
可能被釋放latch的程式所喚醒
不用於所有的latch,因為它需要latch waiter列表的掃描
透過使用_latch_wait_posting引數來控制
v$session_event
v$session_wait
v$latch/v$latch_misses
v$latchholder
latch troubleshoting
1, 確認哪些會話有問題
2,找到會話等待最多的latch是什麼
3,識別出競爭中相關的子latch
4,確認kernel碼層次等待latch獲取是已經完成了嗎
statspack,awr or v$latch_misses
x$ksuprlat or x$ksupr if problem with some sessions
kgx=kernel generic mutex
自oracle10.2引入
從物理上像latch(一塊或一片記憶體)
更加輕量級
更小
能內嵌到其它結構中(KGL HD)
客戶端可以定義很靈活的spin/yield/wait策略
不計算gets,spingets,yields,僅僅只統計出來waits
kgx mutexes不是os mutexes啊,切記喲
library cache的mutexes
用於保護v$sqlstats buckets
oradebug dump cursor_stats 1
用於pinning library cache cursors和父級檢驗(查)
假如_kks_use_mutex_pin=true(預設從10.2.0.2)
oradebug dump librarycache level 10
在11g中mutexes用於代替library cache latches
11g中有131072 mutexes代替67之多的library cache latches
在11g中知名(已知)的mutex 型別:
cursor parent
cursor pin
cursor stat
library cache
hash table
v$session_wait
mutex睡眠次數很好表示出.p1,p2,p3的值表示在處於競爭狀態的library cache 物件的hash value是什麼,持有mutex的會話是哪個?
v$event_name和v$session_wait的text列有p1,p2,p3含義的描述
有如下一些等待事件:
cursor:mutex S
cursor:mutex X
library cache:mutex S
library cache:mutex X
v$mutex_sleep
顯示等待時間,以及對於各種型別的mutex和位置的睡眠次數
v$mutex_sleep_history
顯示最近每個mutex睡眠的發生情況
根據每個可迴圈使用的buffer,會有更加詳細的內容
systemstate dumps
10
低階的機制,用於序列級訪問控制對於比如cache buffer header等記憶體結構
1,僅僅是一種簡單的記憶體結構
2,通常大小在100-200b
3,被封裝成一個個小型的狀態物件結構
4,固定在固定sga(父latch)或者共享池中
5,它是透過硬體原子cas(比較與交換)的指令來實現,比如在intel平臺是lock CMPXCHG
6,從oracle8後開始共享
用於一些高階ops特性
比如,當檢查buffer chain時,用於cache buffers chains latch的獲取
什麼是latch 競爭
我想得到一個latch,但此時已經有人在使用或佔用它了
以上情況可分兩種分支:
如果gets(請求)是採用非等待模式,返回給呼叫者失敗資訊
如果gets(請求)採用樂意等待模式,繼續嘗試gets
多次嘗試gets,這種情況就叫spinning
仍舊得不到latch,就沉睡一些時間
在latch 世界中,10ms是一個相當長的時間
_max_exponential_sleep
_max_sleep_holding_latch
可能被釋放latch的程式所喚醒
不用於所有的latch,因為它需要latch waiter列表的掃描
透過使用_latch_wait_posting引數來控制
v$session_event
v$session_wait
v$latch/v$latch_misses
v$latchholder
latch troubleshoting
1, 確認哪些會話有問題
2,找到會話等待最多的latch是什麼
3,識別出競爭中相關的子latch
4,確認kernel碼層次等待latch獲取是已經完成了嗎
statspack,awr or v$latch_misses
x$ksuprlat or x$ksupr if problem with some sessions
kgx=kernel generic mutex
自oracle10.2引入
從物理上像latch(一塊或一片記憶體)
更加輕量級
更小
能內嵌到其它結構中(KGL HD)
客戶端可以定義很靈活的spin/yield/wait策略
不計算gets,spingets,yields,僅僅只統計出來waits
kgx mutexes不是os mutexes啊,切記喲
library cache的mutexes
用於保護v$sqlstats buckets
oradebug dump cursor_stats 1
用於pinning library cache cursors和父級檢驗(查)
假如_kks_use_mutex_pin=true(預設從10.2.0.2)
oradebug dump librarycache level 10
在11g中mutexes用於代替library cache latches
11g中有131072 mutexes代替67之多的library cache latches
在11g中知名(已知)的mutex 型別:
cursor parent
cursor pin
cursor stat
library cache
hash table
v$session_wait
mutex睡眠次數很好表示出.p1,p2,p3的值表示在處於競爭狀態的library cache 物件的hash value是什麼,持有mutex的會話是哪個?
v$event_name和v$session_wait的text列有p1,p2,p3含義的描述
有如下一些等待事件:
cursor:mutex S
cursor:mutex X
library cache:mutex S
library cache:mutex X
v$mutex_sleep
顯示等待時間,以及對於各種型別的mutex和位置的睡眠次數
v$mutex_sleep_history
顯示最近每個mutex睡眠的發生情況
根據每個可迴圈使用的buffer,會有更加詳細的內容
systemstate dumps
10
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-631161/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle latch_自譯文_(2)Oracle
- oracle latch_自譯文_(3)Oracle
- 張正友標定論文翻譯(1)
- oracle自測總結1Oracle
- oracle 失效物件自動重新編譯Oracle物件編譯
- 【深度學習 論文篇 01-1 】AlexNet論文翻譯深度學習
- 再貼一篇譯文 (1千字)
- rfc1945-http1.0自譯本-(1) (轉)HTTP
- RFC2617- HTTP Authentication自譯本-(1) (轉)HTTP
- 譯文:WebKit for DevelopersWebKitDeveloper
- 飆高音(譯文)
- C標準庫參考指南系列譯文(1)assert.h
- 【公益譯文】安全控制評估自動化支援:軟體漏洞管理
- objc系列譯文(6.2):編譯器OBJ編譯
- TransH論文翻譯
- Ambari 架構(譯文)架構
- NDT論文翻譯
- 【公益譯文】安全控制評估自動化支援:軟體漏洞管理(二)
- 【公益譯文】安全控制評估自動化支援:軟體漏洞管理(三)
- ORACLE自動重編譯包導致查詢被卡Oracle編譯
- [譯] 使用深度學習自動生成 HTML 程式碼 - 第 1 部分深度學習HTML
- 編譯原理 LL1文法First集演算法實現編譯原理演算法
- [翻譯自官方]什麼是RDB和AOF? 一文了解Redis持久化!Redis持久化
- 《Scalable IO in Java》譯文Java
- 《太上感應篇》譯文
- 譯文:影象優化(上)優化
- 【譯文】OAuth 2 介紹OAuth
- 理解 Node.js(譯文)Node.js
- 併發框架Disruptor譯文框架
- 自媒體-軟文
- 全網唯一完整譯文|Waymo無人車報告:通往自動駕駛之路自動駕駛
- Understanding HBase and BigTable 譯文
- JavaScript中的Object相等(譯文)JavaScriptObject
- 【譯文】CSS 與網路效能CSS
- samesite-cookie詳解(譯文)Cookie
- A3C論文翻譯
- [譯文] JavaScript async 和 awaitJavaScriptAI
- Java Volatile Keyword - 譯文Java