如何在 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執行時所需要的硬體資源不再存在爭用的情況,進而就避免了其執行時間的增長或者不穩定。
做Oracle DBA要會些什麼問題
在最近幾年裡,我已為多家公司面試了許多與oracle資料庫管理員 以下簡稱 dba 位置相關的面試者。從乙個剛剛入門的最初級的開發人員到乙個資深水平的資料庫管理員,當然其中最多的面試者是對資料庫管理員這一位置的。在這期間,使我感受最深的是,你去雇用乙個,或被僱傭成為乙個dba 有時侯是非常困難的,除...
查詢優化 SQL優化
查詢優化注意點 代表查詢速度比較 1 所有查詢必須注意 的使用必要性 cout 1 cout 2 字段 主鍵索引 字段 普通索引 字段 沒有索引 3 乙個字段 多個字段 欄位多越慢 4 大於10000和大於10001的區別 後者大於前者 5 列沒別名 列 有別名6 兩個條件,where時應該將符合資...
SQL優化 索引優化
一 發現哪些sql語句有效能問題 開啟mysql慢查詢日誌對sql語句進行監控 show variables like slow query log 檢視是否開啟慢查詢日誌 set global slow query log on 開啟慢查詢日誌 set global log queries not...