深入淺出等待事件和效能診斷01
最近都在培訓舞蹈,oracle和os上很久沒有去看了,年底也快忙完了電還是要衝的,還是迴歸oracle世界吧!終於算是初步把eygle的深入淺出全部讀完了,就深入淺出的最後兩章等待事件和sql效能診斷方面記載一二。
資料庫效能瓶頸方面,可能第一反應便是oracle的等待事件,而v$event_name檢視記錄了當前資料庫支援的等待事件及其基本資訊,parameter1,parameter2,parameter3對於不同的等待事件的意思各不相同。
Oracle等待事件分為:既空閒idle等待事件和非空閒non-idle等待事件。空閒等待事件指oracle正等待某種工作,在診斷和最佳化資料庫的時候,不用過多注意,stat$idle_event檢視記錄的則是空閒等待事件。非空閒等待事件專門針對oracle活動,指資料庫任務或應用執行過程中發生的等待,當然這些等待需要關注於 研究調整。
可以透過v$event_name檢視檢視各類等待事件
SQL> col wait_class for a20;
SQL> select wait_class,wait_class#,wait_class_id,count(*) from v$event_name group by wait_class,wait_class#,wait_class_id;
WAIT_CLASS WAIT_CLASS# WAIT_CLASS_ID COUNT(*)
-------------------- ----------- ------------- ----------
Idle 6 2723168908 62
Cluster 11 3871361733 47
Administrative 3 4166625743 46
Scheduler 10 2396326234 2
System I/O 9 4108307767 24
Concurrency 4 3875070507 24
Configuration 2 3290255840 23
Other 0 1893977003 588
Application 1 4217450380 12
Network 7 2000153315 26
User I/O 8 1740759767 17
Commit 5 3386400367 1
12 rows selected
同樣也可以檢視v$system_wait_class檢視獲得各類主要等待事件的等待事件和等待次數資訊
SQL> select * from v$system_wait_class;
WAIT_CLASS_ID WAIT_CLASS# WAIT_CLASS TOTAL_WAITS TIME_WAITED
------------- ----------- -------------------- ----------- -----------
1893977003 0 Other 1468 3654
4217450380 1 Application 2819 86
3290255840 2 Configuration 2 82
3875070507 4 Concurrency 490 2639
3386400367 5 Commit 3306 2420
2723168908 6 Idle 203983 72024430
2000153315 7 Network 46096 37
1740759767 8 User I/O 9609 40303
4108307767 9 System I/O 45639 14443
9 rows selected
V$session和v$session_wait
在關注oracle的效能,這兩個檢視經常被應用,從oracle 10gR1中,v$session中增加了關於等待事件的欄位,實際上也就是把v$session_wait檢視中的所有欄位全部整合到v$session檢視中。V$session中的event,P1TEXT描述具體引數,P1代表十進位制定義的引數,p1raw十六進位制表示的引數值等,又增加了service_name,sql_trace,sql_trace_waits和sql_trace_binds,顯示了當前session連線方式及是否啟用sql_trace跟蹤。由於v$session記錄的是動態資訊,隨著session的生命週期相關,oracle又提供了另一個檢視v$system_event記錄資料庫自啟動以來的所有等待事件資訊。
這裡說一下關於db file scattered read等待事件而查詢相應的session的sql語句,找到問題根本。
select a.sql_text
from v$sqltext a where (a.hash_value,a.address) in (select b.sql_hash_value,sql_address
from v$session b
where b.sid=&sid);
這裡先從v$session_wait找到相關等待事件的sid,然後透過聯合v$session檢視進而獲得v$session檢視的sql_hash_value,sql_address最後聯合v$sqltext找到等待事件的session的sql語句,進而運用10046,sql_trace或autotrace檢視相應的sql語句進而調整。
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25362835/viewspace-1057059/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於等待事件的效能診斷(轉)事件
- MySQL使用event等待事件進行資料庫效能診斷MySql事件資料庫
- Oracle診斷事件列表(轉)Oracle事件
- 利用errorstack事件進行錯誤跟蹤和診斷Error事件
- 深入淺出React和ReduxReactRedux
- Part II 診斷和優化資料庫效能優化資料庫
- 深入淺出FE(十四)深入淺出websocketWeb
- 效能診斷利器JProfiler快速入門和最佳實踐
- JProfiler for Mac:提升效能和診斷問題的終極工具Mac
- 網路效能監控和診斷市場指南(2020版)
- 深入淺出:5G和HTTPHTTP
- 深入淺出JVM(十一)之如何判斷物件“已死”JVM物件
- 一次ORACLE IO效能診斷案例Oracle
- .NET Core-全域性效能診斷工具
- 淺讀-《深入淺出Nodejs》NodeJS
- Solidity事件,等待事件Solid事件
- 深入淺出mongooseGo
- HTTP深入淺出HTTP
- 深入淺出WebpackWeb
- 深入淺出HTTPHTTP
- mysqldump 深入淺出MySql
- 深入淺出——MVCMVC
- 深入淺出IO
- 深入淺出decorator
- ArrayList 深入淺出
- 深入淺出 RabbitMQMQ
- 深入淺出PromisePromise
- 深入淺出 ZooKeeper
- 深入淺出etcd系列 – 心跳和選舉
- (十八)深入淺出TCPIP之HTTP和HTTPSTCPHTTP
- 深入淺出MyBatis:反射和動態代理MyBatis反射
- 深入淺出MyBatis:JDBC和MyBatis介紹MyBatisJDBC
- sp_sysmon效能診斷結果分析(zt)
- 【TUNE_ORACLE】等待事件之等待事件類別Oracle事件
- 深入淺出開源效能測試工具 Locust (使用篇 2)
- 兩個小問題深入淺出List的效能問題
- 深入淺出,Spring 框架和 Spring Boot 的故事框架Spring Boot
- 深入淺出Tomcat/2 - Tomcat啟動和停止Tomcat
- 深入淺出MyBatis:MyBatis解析和執行原理MyBatis