溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

SQL Server內(nèi)幕之預(yù)估與實(shí)際執(zhí)行計(jì)劃

發(fā)布時間:2020-07-28 04:35:55 來源:網(wǎng)絡(luò) 閱讀:753 作者:易語隨風(fēng)去 欄目:關(guān)系型數(shù)據(jù)庫

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 命令。

SQL Server內(nèi)幕之預(yù)估與實(shí)際執(zhí)行計(jì)劃

我們還可以使用擴(kuò)展事件和 XML 計(jì)劃使用動態(tài)管理視圖 (DMVs) 來收集查詢計(jì)劃信息。在分析無法訪問源代碼的應(yīng)用程序時, 這些選項(xiàng)特別有用。

12章討論了包含計(jì)劃信息的 DMVs。


向AI問一下細(xì)節(jié)

免責(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)容。

AI