如何確定 Oracle 中等待時間最長的 SQL 查詢?
問題
您希望識別出導致資料庫中等待時間最長的 SQL 語句。
解決方案
我們可以使用以下 SQL 語句來識別出導致問題的 SQL。以下查詢將對過去 30 分鐘內執行的 SQL 語句進行排名,並根據每個查詢的總等待時間顯示它們。
示例
SELECT ash.user_id, u.username, s.sql_text, SUM(ash.wait_time + ash.time_waited) ttl_wait_time FROM v$active_session_history ash, v$sqlarea s, dba_users u WHERE ash.sample_time BETWEEN sysdate - 60/2880 AND sysdate AND ash.sql_id = s.sql_id AND ash.user_id = u.user_id GROUP BY ash.user_id, s.sql_text, u.username ORDER BY ttl_wait_time ;
當您遇到效能問題時,我們建議您驗證哪些 SQL 語句的等待時間最長。要找到等待時間最長的查詢,您必須對 "V$ACTIVE_SESSION_HISTORY" 檢視的 wait_time 和 time_waited 列中針對特定 SQL 語句的值求和。為此,您必須使用 SQL_ID 作為連線列將 V$SQLAREA 檢視與 "V$ACTIVE_SESSION_HISTORY" 檢視連線起來。
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP