SQL Server內幕之預估與實際執行計劃

Estimated vs. actual query planssql


咱們可讓SQL server輸出計劃(對於任何顯示計劃選項-圖形、文本或 XML)是否包含實際運行查詢。數據庫


在不執行查詢的狀況下生成的查詢計劃稱爲  "預估執行計劃 ", 由於 SQL server 可能選擇從新編譯查詢 (因爲各類緣由可能會發生重編譯), 而且可能在執行時生成不一樣的查詢計劃。ide


預估執行計劃對於各類用途頗有幫助的, 例如查看長時間運行的查詢的查詢計劃而不等待它完成;在不改變數據庫狀態或獲取任何鎖的狀況下查看插入、更新或刪除語句的查詢計劃;或者在不實際運行查詢的狀況下, 探索各類優化提示對查詢計劃的影響。優化


預估執行計劃包括基數、行大小、成本估計數,2012版本新增功能--估計執行模式, 本章後面將對此進行介紹。命令行


提示:優化程序報告的預估成本旨在做爲一個指南, 用於比較單個查詢計劃或兩個不一樣計劃的相對成本中的不一樣運算符的預期相對成本。這些單位預估並不意味着任何絕對意義上的解釋, 如毫秒或秒。server


執行查詢後生成的查詢計劃稱爲實際執行計劃。實際執行計劃包含的信息與估計的執行計劃加上實際的行計數和每一個運算符的實際處決次數相同。比較估計值和實際行數能夠幫助咱們識別基數估計錯誤, 這可能會致使其餘計劃問題。blog


提示:實際執行計劃包含與預估執行計劃相同的成本估計。儘管 SQL server 在生成實際執行計劃時實際執行查詢計劃, 但這些成本估計仍然與優化程序生成的估計值相同, 而且不反映實際的執行成本。事件


在從 SQL server 管理工做室或 SQLCMD 命令行實用程序運行即席查詢時,可使用幾個 transact-sql 命令來收集顯示計劃選項輸出。經過這些命令, 能夠收集文本和 XML 計劃, 以及預估和實際計劃。it

表10-1 列出了啓用顯示計劃選項的全部可用 set 命令。編譯

blob.png

咱們還可使用擴展事件和 XML 計劃使用動態管理視圖 (DMVs) 來收集查詢計劃信息。在分析沒法訪問源代碼的應用程序時, 這些選項特別有用。

12章討論了包含計劃信息的 DMVs。

相關文章
相關標籤/搜索