Oracle

數據庫有時很慢

  • July 15, 2015

我正在執行 100 次 Web 服務。該服務的平均響應時間為 1.5 秒。但是當我單獨查看每個執行的響應時間時,有一些執行(至少 10 個)需要超過 15 秒才能響應。每個請求的數據與之前的任何請求完全相同(只是將動態數字附加到名稱…等)。

它看起來確實像一個數據庫問題,因為每次我們一次又一次地執行相同的查詢時,我的數據庫都會做出不同的響應。我無法理解為什麼我的數據庫會這樣。我的數據庫是oracle 11g。我以前也遇到過不同 UI 流程的問題。

編輯以添加收集的指標。

在此處輸入圖像描述

是的,statspack 是一種簡單的免費方式。首先要看的是前 5 個定時事件。不幸的是,statspack 不會告訴您特定 sql 語句的問題。要查看特定 sql 語句在何處以及如何花費時間,您需要 ASH。WASH 提供了 ASH 的圖形界面以及 ASH 集合(即不需要 perf pack 許可證)。 http://www.oraclerealworld.com/web-ash-w-ash/ 我推薦 lab128,它有 2 天的免費試用期 http://www.lab128.com/lab128_download.html Lab128 可以自己收集 ASH,也可以選擇使用性能包中的 ASH 收集。一個你在執行的那些,看看你花時間在哪裡——CPU、I/O、鎖或其他東西。在上述兩種工具中,您可以看到單個 SQL 花費時間來幫助您區分一個 SQL 中的問題與在數據庫的整體統計數據中失去 SQL 問題的地方。

根據您的解釋,我認為您認為數據完全相同是不正確的。數據更有可能以相同的方式導出,但不同。在許多情況下,查詢所需的許多數據塊很可能在記憶體中,但在其他情況下,它們需要從磁碟讀取。

我確實擔心您的平均響應時間是 1.5 秒。這對於線上系統來說非常慢。

追踪這一點需要做的事情(我假設是 Unix/Linux 伺服器):

  • 監視包含數據庫文件的分區上的磁碟活動。我用sar. 尋找任何值的周期性變化。
  • 檢查總記憶體消耗。如果程序或共享記憶體開始分頁,性能將迅速下降。我也用sar這個。
  • 確保您的 SGA 足夠大。預設大小非常保守,通常應該增加。

Oracle 有一些非常好的線上文件。花時間回顧和理解它。

引用自:https://dba.stackexchange.com/questions/57835