Performance

如何通過 SQL 隔離一般的 Oracle 10g 問題

  • November 9, 2012

背景

我一直在對 Oracle 10g 伺服器上存在重大性能問題的系統進行性能分析。大部分 SQL 都寫得很糟糕,或者至少沒有考慮到性能。這個問題仍然感覺太廣泛和籠統,只能由糟糕的 SQL 引起。它並不是一個真正的大型數據庫(最大的幾張表包含大約 800 萬行,每行不到一半的數據)並且伺服器規格也不是那麼糟糕(Ultrasparc,訪問(他們說)到 96 個超執行緒 @ 1.2ghz , 2gb sga). 我們嘗試將 sga 增加到接近整個 db (20gb) 的大小,發現只有幾個百分比是速度增益,這使我們願意排除 I/O 問題。維護部門在硬體或作業系統方面看不到任何錯誤,但也沒有太大幫助。

問題

像這樣的數據庫中有幾個可能的瓶頸。我在下面列出了我能想到的那些。是否有任何特定的操作(最好是 SQL),我只有“少數”DBA 權限,可以執行以獲得可測量的值來幫助確定我的問題在哪裡?

  • 磁碟 I/O 速度。我現在如何獲得良好的測量結果?
  • CPU 吞吐量。1.2GHz能剷出多少數據?
  • CPU 的數量,有多少是可以訪問的?
  • 記憶體/SGA 大小。索引交換等
  • 分揀區域大小
  • 臨時表空間(用於實現等)

如果您想到我想念的東西,請建議更多類別。

你應該做的第一件事是讓 AWR(10g on)/statspack(如果你在舊版本的數據庫上) 在你的數據庫上執行,這樣它每隔幾分鐘就會生成一個快照(很少有人說 15、30 ..如果你需要更高的解析度,使快照更頻繁)。這將為您提供有關 IO、CPU 等的系統概述,並將向您展示 TOP SQL(在 IO、CPU、執行時、執行等方面)。它也會建議 SGA / 緩衝區記憶體的使用。

從那時起,您應該開始查看最糟糕的 sql/區域並執行工具,例如對 sql 語句的解釋計劃/tkprof/sql 跟踪和對任何執行緩慢的 pl/sql 程式碼的 plsql 分析器。

你試過阿什蒙嗎?這是一個免費的圖形工具,將顯示來自 v 的資訊 $ active_session_history. It will complain if you try to connect not as ‘system’ user but I’ve tried it before and as long as you’ve got access to v $ active_session_history 你應該沒問題。

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