Oracle DBA做SQL最佳化的最佳思路

來源:互聯網
上載者:User

如何在 Oracle資料庫裡寫出高品質的SQL語句,如何在Oracle資料庫裡對有效能問題的SQL做診斷和調整,這是DBA們在ORACLE資料庫實踐中不可避免的難題。下面就讓我們來分析一下拿到一條問題sql後我們可以如何去開始我們的最佳化思路。

對於有問題的SQL做SQL最佳化的具體步驟一般為:

1、查看該SQL語句的執行計畫,並結合其資源消耗情況和相關統計資訊、Trace檔案來分析其執行計畫是否合理;

2、通過修正措施(如調整該SQL的執行計畫等)來對該SQL做調整以縮短其執行時間,Oracle資料庫裡SQL最佳化的終極目標就是要縮短目標SQL語句的執行時間。要達到上述目的,我們通常只有如下三種方法可以選擇:

1、降低目標SQL語句的資源消耗;

2、並存執行目標SQL語句;

3、平衡系統的資源消耗。

方法1:降低目標SQL語句的資源消耗”以縮短執行時間,這是最常用的SQL最佳化方法。這種方法的核心是要麼通過在不更改商務邏輯的情況下改寫SQL來降低目標SQL語句的資源消耗,要麼不改SQL但通過調整執行計畫或相關表的資料來降低目標SQL語句的資源消耗。

方法2:並存執行目標SQL語句”,這實際上是以額外的資源消耗來換取執行時間的縮短,很多情況下使用並行是針對某些SQL的唯一最佳化手段。

方法3:平衡系統的資源消耗” 可以避免不必要的資源爭用所導致的目標SQL語句執行時間的增長。對某些SQL而言,其執行時間的增長或者不穩定(時快時慢)不是由於其執行計畫的問題,而是由於在目標SQL執行時系統處於高負荷狀態,執行目標SQL所需要的硬體資源(CPU、記憶體、IO等)得不到保障,存在爭用的情況。在這樣的情況下,如果我們能平衡系統的資源消耗,把一些跟目標SQL同時執行的不重要但很消耗系統資源的操作(如報表、批處理等)挪到系統不忙的時候執行,比如把它們挪到晚上執行,那麼就可以釋放部分系統硬體資源以確保目標SQL執行時所需要的硬體資源不再存在爭用的情況,進而就避免了其執行時間的增長或者不穩定。

 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.