您好,登錄后才能下訂單哦!
Estimated vs. actual query plans
我們可以讓SQL server輸出計(jì)劃(對于任何顯示計(jì)劃選項(xiàng)-圖形、文本或 XML)是否包含實(shí)際運(yùn)行查詢。
在不執(zhí)行查詢的情況下生成的查詢計(jì)劃稱為 "預(yù)估執(zhí)行計(jì)劃 ", 因?yàn)?SQL server 可能選擇重新編譯查詢 (由于各種原因可能會發(fā)生重編譯), 并且可能在執(zhí)行時生成不同的查詢計(jì)劃。
預(yù)估執(zhí)行計(jì)劃對于各種用途很有幫助的, 例如查看長時間運(yùn)行的查詢的查詢計(jì)劃而不等待它完成;在不改變數(shù)據(jù)庫狀態(tài)或獲取任何鎖的情況下查看插入、更新或刪除語句的查詢計(jì)劃;或者在不實(shí)際運(yùn)行查詢的情況下, 探索各種優(yōu)化提示對查詢計(jì)劃的影響。
預(yù)估執(zhí)行計(jì)劃包括基數(shù)、行大小、成本估計(jì)數(shù),2012版本新增功能--估計(jì)執(zhí)行模式, 本章后面將對此進(jìn)行介紹。
提示:優(yōu)化程序報(bào)告的預(yù)估成本旨在作為一個指南, 用于比較單個查詢計(jì)劃或兩個不同計(jì)劃的相對成本中的不同運(yùn)算符的預(yù)期相對成本。這些單位預(yù)估并不意味著任何絕對意義上的解釋, 如毫秒或秒。
執(zhí)行查詢后生成的查詢計(jì)劃稱為實(shí)際執(zhí)行計(jì)劃。實(shí)際執(zhí)行計(jì)劃包含的信息與估計(jì)的執(zhí)行計(jì)劃加上實(shí)際的行計(jì)數(shù)和每個運(yùn)算符的實(shí)際處決次數(shù)相同。比較估計(jì)值和實(shí)際行數(shù)可以幫助我們識別基數(shù)估計(jì)錯誤, 這可能會導(dǎo)致其他計(jì)劃問題。
提示:實(shí)際執(zhí)行計(jì)劃包含與預(yù)估執(zhí)行計(jì)劃相同的成本估計(jì)。盡管 SQL server 在生成實(shí)際執(zhí)行計(jì)劃時實(shí)際執(zhí)行查詢計(jì)劃, 但這些成本估計(jì)仍然與優(yōu)化程序生成的估計(jì)值相同, 并且不反映實(shí)際的執(zhí)行成本。
在從 SQL server 管理工作室或 SQLCMD 命令行實(shí)用程序運(yùn)行即席查詢時,可以使用幾個 transact-sql 命令來收集顯示計(jì)劃選項(xiàng)輸出。通過這些命令, 可以收集文本和 XML 計(jì)劃, 以及預(yù)估和實(shí)際計(jì)劃。
表10-1 列出了啟用顯示計(jì)劃選項(xiàng)的所有可用 set 命令。
我們還可以使用擴(kuò)展事件和 XML 計(jì)劃使用動態(tài)管理視圖 (DMVs) 來收集查詢計(jì)劃信息。在分析無法訪問源代碼的應(yīng)用程序時, 這些選項(xiàng)特別有用。
12章討論了包含計(jì)劃信息的 DMVs。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。