性能調優第二篇-執行計劃

前言


在我們拿到一個SQL 語句後,要嘗試對他進行調優第一件事是格式化,那第二件事就是查看SQL 的執行計劃。


什麼是執行計劃


SQL Server查詢處理器由兩個組件組成:查詢優化器和查詢執行引擎。查詢優化器負責生成好的執行計劃。查詢執行引擎接受查詢優化器生成的執行。查詢執行涉及許多功能,包括從表和索引檢索和更新數據,以及連接和聚合等操作。總之,SQL 語句只能告訴數據庫我們想要什麼數據。執行計劃就是如何去取得這些數據的具體方法。


查看執行計劃




圖中的兩個按鈕分別用戶查看估計的執行計劃和實際的執行計劃

估計的執行計劃:就是在SQL 還沒執行前優化器產生的執行計劃

實際的執行計劃:需要實際的去執行SQL 語句才能看到。

1.估計的執行計劃和實際的執行計劃可能會有差異

2.實際的執行計劃可以看到實際的行數。如果實際的行數和估計的行數差異很大的時候。我們就需要注意。有可能產生的執行就會不是最優的。所以,如果在條件允許的情況下,儘量查看實際的執行計劃


分類


圖形化的執行計劃

閱讀順序是的從右往左,從上到下。對於初學者,圖形化的執行計劃是最直觀的。所以,後續的博客也主要以這種形式爲主。圖中每一個圖形就是一個操作符。

比如:   就是表示對錶#tt進行掃描。




這裏一個需要重點關注,就是每個操作符的開銷。開銷佔比越大,我們就需要特別關注他。另外需要注意的是:這裏的百分百值加起來可能會超過100%。這算是一個BUG。

不過就算超過100%,這個開銷也是很有參考意義的。相對值越大的開銷也越大。


文本的執行計劃


在執行SQL查詢之前,運行   SET SHOWPLAN_ALL ON. 就會輸出如下的文本形式的執行計劃。閱讀順序是從內到外。具體舒心如下圖所標示:




XML格式

使用下面的語句開啓:

SET STATISTICS XML ON .閱讀方式和文本形式的類型。從內向外。每一個<Relop> 就是一個操作符。上面有跟這個操作相關的信息。這種形式的執行計劃我用得很少。感覺不如前面2種的直觀。




總結


文章主要是講什麼是執行計劃,和如何查看執行計劃。下一篇文章會分享 常見的運算符。


發佈了76 篇原創文章 · 獲贊 101 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章