【乾貨】語句優化思路與流程

  最近接到一個系統全面優化的工做,此係統從開發到運維到管理(服務器配置/架構/索引設計/平常維護)等等方面均很是優秀,在以前的一些文章中不多涉及深層次語句調優的方法和思路,那麼今天補充一篇。html

廢話很少說 直接上思路步驟。數據庫

 

步驟一: 肯定重點語句

  此部分詳細說明,請參見:Expert 診斷優化系列-------------針對重點語句調索引性能優化

  • l  在SQL專家雲[全面診斷] –[慢語句]-[彙總視圖](默認頁) 中找到執行次數多的語句
  • l  結合業務找出重點功能,針對性梳理調優

 

步驟二 : 重點語句調整思路(如下方法爲遞進方式)

注:如下思路適用於語句深度調優(已經規避低級設計或寫法問題,具體內容請參見 :SQL SERVER全面優化-------寫出好語句是習慣服務器

   

  • l  在複雜存儲過程當中找出慢的部分(如圖:存儲過程總體執行6秒,主要消耗在2個高消耗子語句)

 

  在SQL專家雲語句執行中觀察所產生的等待,消除語句等待(此部分涉及的點較多,請參見 全面調優系列 SQL SERVER全面優化-------Expert for SQL Server 診斷系列架構

 

 

  • l  定位高開銷
    • n    Set statistics io on 定位高邏輯讀部分
    • n    執行計劃中高開銷百分比
    • n    Hash join/merage join/nested join 表掃描/索引掃描次數
  • l  沒有明顯缺失索引或以添加索引後,詳細分析執行計劃
    • n    繼續分析索引(消除key lookup,index/table spool 等)
    • n    分析查詢計劃嘗試使用查詢提示(option 並行/並行度/鏈接方式/鏈接順序等)
  • l  分析語句複雜度及寫法
    • n    儘可能較少表關聯數量(1.執行計劃穩定性 2.預估數量準確性 3.嵌套致使的屢次掃描)
    • n    視圖/表值函數篩選條件應用(較少視圖查詢數據量)
    • n    下降視圖複雜度(多層視圖嵌套且涉及數量量大沒法根據條件篩選),下降因爲複雜度致使的視圖內表屢次嵌套(hash join/ nested join)掃描
  • 考慮使用高成本多字段覆蓋索引
    •  當語句複雜度高且受業務限制沒法修改,則嘗試使用多列覆蓋索引來下降內層屢次循環中的每次開銷
  • l  下降數據量與讀寫分離
    • n  當語句複雜度高且受業務限制沒法修改,能夠考慮下降表數據量來減小每次掃描/嵌套開銷等等
    • n  讀寫分離,報表類大查詢下降語句阻塞影響,非核心類查詢分離等

步驟三 :保證執行計劃穩定性

當上述優化都進行之後,要確保運行運行穩定,包含以下因素:運維

  • l  統計信息
  • l  索引碎片
  • l  參數嗅探
  • l  執行計劃重編譯
  • l  2014以上版本的新參數估計
  • l  其餘多種因素

步驟四 :複雜過程當中其餘部分調優

  • l  複雜過程的優化可能涉及集中狀況
    • n    過程當中大量時間和消耗集中在1-2條語句,則針對性調優
    • n    時間及消耗分佈在多條語句,每條語句時間都不是很長,但總體步驟多,此時通常重點業務逐條優化,非重點業務優化循環類操做
    • n    非逐條分析,總體環境提高如參數配置、索引全面解析

注 :此部分根據自身業務狀況而定,沒法給出標準套路函數

 

另附幾篇較好的優化思路文章,供你們參考:post

數據庫優化案例——————某市中心醫院HIS系統性能

30分鐘帶你熟練性能優化的那點兒事兒(案例說明)優化

SQL SERVER全面優化-------Expert for SQL Server 診斷系列

 

--------------博客地址---------------------------------------------------------------------------

診斷優化系列 http://www.cnblogs.com/double-K/

 

-----------------------------------------------------------------------------------------------------

 

  總結 : 語句的調優方法不少,內容很複雜,涉及到的點也不少,沒法所有涉及,本文也許只是提供一個簡單的思路供你們參考。

      各有各的套路和方法,不喜勿噴!

      優化無止境,且行且珍惜!

-----------------------------------------------------------------------------------------------------

注:此文章爲原創,歡迎轉載,請在文章頁面明顯位置給出此文連接!
若您以爲這篇文章還不錯請點擊下右下角的推薦,很是感謝!

相關文章
相關標籤/搜索