基於等待事件的效能診斷(轉)
等待事件(wait event)是oracle核心程式碼的一個命名部分,有兩種型別的等待事件:空閒事件(idle event)與非空閒事件(non-idle event),空閒事件指oracle正在等待某種工作,常見的空閒等待事件:client message、null event、pipe get、pmon/smon timer、rdbms rpc message及sql*net等;非空閒等待事件:buffer busy waits、db file scattered read、db file sequential read、enqueue、free buffer waits、latch free、log file sync、log file paralle write等。
什麼是瓶頸?一旦熟悉了系統的等待事件,就能夠把握問題的關鍵,並能夠用相應的方法去處理阻塞系統的瓶頸,一定不要隨意的進行優化,否則一波不息一波又起,可以通過v$system_event獲取系統總的等待情況,然後通過v$session_event檢視系統中session的等待情況,最後通過v$session_wait定位瓶頸物件。v$session_wait是會話級的,它包含session的實時資訊,最重要的是:它顯示了等待事件與相應資源的更深入資訊,可確定出產生瓶頸的型別及其物件。
v$session_wait的p1、p2、p3告訴我們等待事件的具體含義,如果wait event是db file scattered read,p1=file_id/p2=block_id/p3=blocks,然後通過dba_extents即可確定出熱點物件;如果是latch free的話,p2為閂鎖號,它指向v$latch。
--求等待事件及其對應的latch
col event format a32
col name format a32
select sid,event,p1 as file_id, p2 as "block_id/latch", p3 as blocks,l.name
from v$session_wait sw,v$latch l
where event not like '%SQL%' and event not like '%rdbms%'
and event not like '%mon%' and sw.p2 = l.latch#(+);
--求等待事件及其熱點物件
col owner format a18
col segment_name format a32
col segment_type format a32
select owner,segment_name,segment_type
from dba_extents
where file_id = &file_id and &block_id between block_id
and block_id + &blocks - 1;
--綜合以上兩條sql,同時顯示latch及熱點物件(速度較慢)
select sw.sid,event,l.name,de.segment_name
from v$session_wait sw,v$latch l,dba_extents de
where event not like '%SQL%' and event not like '%rdbms%'
and event not like '%mon%' and sw.p2 = l.latch#(+) and sw.p1 = de.file_id(+) and p2 between de.block_id and de.block_id + de.blocks - 1;
--如果是非空閒等待事件,通過等待會話的sid可以求出該會話在執行的sql
select sql_text
from v$sqltext_with_newlines st,v$session se
where st.address=se.sql_address and st.hash_value=se.sql_hash_value
and se.sid =&wait_sid order by piece;
通過等待事件找出系統中消耗資源較嚴重的sql,是dba進行系統診斷的手段之一。只是過程稍嫌煩瑣,由於session是動態的、瞬息萬變、不可捕獲,當你想捕獲時,該session可能已經釋放,但這種捕獲很有針對性;也可以通過對v$sql或v$sqlarea進行過濾,找出存在效能問題的sql,長時間地對v$sql進行監控,並對捕獲的sql進行優化處理,可以在很大程度上解決系統的效能問題。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/756652/viewspace-242264/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL使用event等待事件進行資料庫效能診斷MySql事件資料庫
- Oracle診斷事件列表(轉)Oracle事件
- 基於 PTS 壓測輕鬆玩轉問題診斷
- Latch free等待事件(轉)事件
- Latch free等待事件四(轉)事件
- Latch free等待事件三(轉)事件
- Latch free等待事件二(轉)事件
- 【恩墨學院】基於裸資料的異地資料庫效能診斷與最佳化資料庫
- buffer busy wait 等待事件說明(轉)AI事件
- oracle 12c 新增的診斷事件的初步嘗試Oracle事件
- Spark效能優化:診斷記憶體的消耗Spark優化記憶體
- 一次ORACLE IO效能診斷案例Oracle
- .NET Core-全域性效能診斷工具
- Solidity事件,等待事件Solid事件
- sp_sysmon效能診斷結果分析(zt)
- 【TUNE_ORACLE】等待事件之等待事件類別Oracle事件
- 關於enq: TX - allocate ITL entry等待事件ENQ事件
- 利用errorstack事件進行錯誤跟蹤和診斷Error事件
- JProfiler for Mac:提升效能和診斷問題的終極工具Mac
- 如何使用 dotTrace 來診斷 netcore 應用的效能問題NetCore
- Part II 診斷和優化資料庫效能優化資料庫
- ODX 診斷資料庫轉換工具 — DDC資料庫
- [20201204]關於等待事件Log File Sync.txt事件
- 效能診斷利器JProfiler快速入門和最佳實踐
- Selenium等待事件Waits事件AI
- ICCV 2019 | 基於醫療影像的早期診斷中不確定樣本的檢出
- [JVM] 應用診斷工具之Fastthread(線上診斷)JVMASTthread
- 是否可以考慮做一個dotnet應用的效能診斷工具
- 發電機過速診斷研究 - 基於LSTM進行狀態監測
- [20191125]探究等待事件的本源.txt事件
- ORACLE診斷案例Oracle
- 網路效能監控和診斷市場指南(2020版)
- 基於卷積神經網路的軸承故障診斷研究--資料集介紹卷積神經網路
- 使用SQL_TRACE進行資料庫診斷(轉)SQL資料庫
- read by other session等待事件Session事件
- log file sync等待事件事件
- ORACLE 常見等待事件Oracle事件
- latch等待事件彙總事件