2012-04-12 25 views
1

尋找關於如何從Oracle調優開始的建議,我從來沒有做過。如何開始查詢調優?

我想知道如何執行查詢的性能調整。我們爲客戶構建應用程序,所以我沒有生產數據庫。我基本知道我們的哪些查詢很重要,並且希望確保它們能夠快速運行。

在MSSQL中,它非常直接,當您啓用執行計劃時,它會顯示其他索引,這將有助於查詢。 Oracle中是否有類似的東西?或者也許另一種方法?

+0

我會開始記錄查詢執行計劃。捕獲SQL工作負載也是一個有趣的選擇。 – Anonymous 2012-04-12 18:46:16

回答

6

性能調整是一個很大的課題。人們採取兩種基本類型的方法:科學猜測

A.臆測(或稱爲獵槍方法)

  1. 查看查詢
  2. 猜測哪些列需要索引沒有他們已經*
  3. 創建索引並重新運行查詢
  4. 如果沒有區別,請返回步驟1並重復。

B.科學

  1. 瞭解如何快速查詢 「應該」。
  2. 確定查詢的實際速度(儘可能在「現實」條件下)。
  3. 如果已經夠快了,就到這裏吧。否則:
  4. 確定大部分時間正在進行 - 旋轉還是等待?
  5. 如果它正在等待,請找出它正在等待的內容,並儘可能消除它。
  6. 如果它在旋轉,找出它不需要做的事情,並儘可能消除它。
  7. 返回步驟2並重復。

*如果沒有更多的索引創建,找別的東西來改變 - 例如任何改變一些會話或系統設置,重建表等)

(萬一***這並不明顯,我是不是提倡方法A)

-1

我會建議的第一件事是,如果您不打算對prod數據庫進行調優,則應該將prod db中的表靜態導入到您的Dev數據庫。這將使您的Dev系統具有與prod類似的數據。如果谷歌導入統計數據,你會發現大量的文章。下一個階段將查看你可以添加索引的查詢,通常在你看到全表掃描是一個好地方看。

你使用綁定變量嗎?

Oracle做了很多緩存數據,所以看看你可以在哪裏使用綁定變量,這將在服務器進程的私有空間進行過濾,並保存數據庫進行物理讀取,因此數據很快返回。

希望這會有所幫助。

+0

-1遵循霰彈槍的方法 – 2012-04-13 06:43:36