Performance
Oracle DB 上的 V_$SYSTEM_EVENT 等待時間非常高
我正在對存在一些一般性能問題的 oracle 數據庫進行故障排除。我執行了以下查詢:
SELECT event AS "Event|Name", total_waits "Total|Waits", round(time_waited / 100, 0) "Seconds|Waiting", total_timeouts "Total|Timeouts", average_wait / 100 "Average|Wait|(in secs)" FROM sys.v_$system_event e ORDER BY time_waited DESC;
前幾行返回如下。數百萬秒的等待時間!(相比之下,我們的其他數據庫對於頂級事件的等待時間小於 10 秒。)這些事件有什麼作用,什麼可能導致這些巨大的等待時間?數據庫已經執行了 30 天,所以我們看到了這麼長時間的聚合。
Event Name Waits Seconds Timeouts Avg Wait ---------------------- --------- -------- -------- -------- SQL*Net message from client 488397968 32050594 0 0.0656 rdbms ipc message 91335556 2455744 9529486 0.0269 DIAG idle wait 5214769 347077 5214769 0.0666 Streams AQ: qmn coordinator idle wait 186521 173696 93278 0.9312 Streams AQ: qmn slave idle wait 95359 173692 51 1.8215 Space Manager: slave idle wait 523165 173647 521016 0.3319 pmon timer 968303 173630 870108 0.1793 fbar timer 8770 173403 8713 19.7723 smon timer 14103 173278 7006 12.2866 log file sync 57967889 90402 649458 0.0016 og file parallel write 86618366 39509 0 0.0005 db file sequential read 244286101 11171 0 0 control file parallel write 1274395 3949 0 0.0031 db file scattered read 157316868 1635 0 0 db file parallel read 11948170 1190 0 0.0001
“來自客戶端的 SQL Net 消息”是數據庫等待客戶端要求做某事所花費的時間(我也將其解釋為數據庫處理的 SQL Net 請求數量的指標)。AskTom有關於該事件的更多資訊。它看起來也不是很長的平均等待時間,所以也許你有一個應用程序向伺服器發出大量小請求?這是 30 天內的大量等待(平均每天 1600 萬次)。
至於 rdbms ipc 消息,這意味著(Oracle 10g 參考):
“後台程序(LGWR、DBWR、LMS0)使用此事件來指示它們處於空閒狀態,並正在等待前台程序向它們發送 IPC 消息以完成某些工作。”
從調整的角度來看,這通常是一個非事件。(伯勒森)