溫馨提示×

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

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

SQL?Server的執(zhí)行計(jì)劃是什么

發(fā)布時(shí)間:2023-04-17 10:59:07 來(lái)源:億速云 閱讀:154 作者:iii 欄目:開(kāi)發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“SQL Server的執(zhí)行計(jì)劃是什么”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“SQL Server的執(zhí)行計(jì)劃是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。

    一、背景

    為了能夠執(zhí)行查詢,SQL Server 數(shù)據(jù)庫(kù)引擎必須分析該語(yǔ)句,以確定訪問(wèn)所需數(shù)據(jù)的最有效方法。此分析由稱為查詢優(yōu)化器的組件處理。查詢優(yōu)化器的輸入由查詢、數(shù)據(jù)庫(kù)架構(gòu)(表和索引定義)和數(shù)據(jù)庫(kù)統(tǒng)計(jì)信息組成。查詢優(yōu)化器的輸出是查詢執(zhí)行計(jì)劃,有時(shí)稱為查詢計(jì)劃或執(zhí)行計(jì)劃。

    查詢執(zhí)行計(jì)劃是以下內(nèi)容的定義:

    • 訪問(wèn)源表的順序。通常,數(shù)據(jù)庫(kù)服務(wù)器可以在許多序列中訪問(wèn)基表以生成結(jié)果集。

    • 用于從每個(gè)表中提取數(shù)據(jù)的方法。通常,訪問(wèn)每個(gè)表中的數(shù)據(jù)有不同的方法。如果只需要具有特定鍵值的幾行,則數(shù)據(jù)庫(kù)服務(wù)器可以使用索引。如果表中的所有行都是必需的,數(shù)據(jù)庫(kù)服務(wù)器可以忽略索引并執(zhí)行表掃描。如果表中的所有行都是必需的,但有一個(gè)索引的鍵列位于 中,則執(zhí)行索引掃描而不是表掃描可能會(huì)保存單獨(dú)的結(jié)果集。如果表非常小,則表掃描可能是幾乎所有訪問(wèn)表的最有效方法。

    • 用于計(jì)算計(jì)算的方法,以及如何篩選、聚合和排序每個(gè)表中的數(shù)據(jù)。從表中訪問(wèn)數(shù)據(jù)時(shí),有不同的方法可以對(duì)數(shù)據(jù)執(zhí)行計(jì)算(例如計(jì)算標(biāo)量值),以及聚合和排序查詢文本中定義的數(shù)據(jù),以及如何篩選數(shù)據(jù)。

    二、顯示和保存執(zhí)行計(jì)劃

    執(zhí)行計(jì)劃以圖形方式顯示 SQL Server 查詢優(yōu)化器選擇的數(shù)據(jù)檢索方法。執(zhí)行計(jì)劃使用圖標(biāo)而不是 SET SHOWPLAN_ALL或 SET SHOWPLAN_TEXT 語(yǔ)句生成的表格表示形式來(lái)表示 SQL Server 中特定語(yǔ)句和查詢的執(zhí)行開(kāi)銷。這種圖形方法對(duì)于了解查詢的性能特征非常有用。

    雖然 SQL Server 查詢優(yōu)化器只生成一個(gè)執(zhí)行計(jì)劃,但存在估計(jì)執(zhí)行計(jì)劃和實(shí)際執(zhí)行計(jì)劃的概念。

    • 估計(jì)的執(zhí)行計(jì)劃返回查詢優(yōu)化器在編譯時(shí)生成的執(zhí)行計(jì)劃。生成估計(jì)的執(zhí)行計(jì)劃不會(huì)實(shí)際執(zhí)行查詢或批處理,因此不包含任何運(yùn)行時(shí)信息,例如實(shí)際資源使用情況指標(biāo)或運(yùn)行時(shí)警告。

    • 實(shí)際執(zhí)行計(jì)劃返回查詢優(yōu)化器生成的執(zhí)行計(jì)劃,并在查詢或批處理完成后返回執(zhí)行計(jì)劃。這包括有關(guān)資源使用情況指標(biāo)和任何運(yùn)行時(shí)警告的運(yùn)行時(shí)信息。

    三、顯示估計(jì)的執(zhí)行計(jì)劃

    生成估計(jì)的執(zhí)行計(jì)劃時(shí),不會(huì)執(zhí)行 T-SQL 查詢或批處理。因此,估計(jì)的執(zhí)行計(jì)劃不包含任何運(yùn)行時(shí)信息,例如實(shí)際資源使用情況指標(biāo)或運(yùn)行時(shí)警告。相反,生成的執(zhí)行計(jì)劃顯示 SQL Server 數(shù)據(jù)庫(kù)引擎在實(shí)際執(zhí)行查詢時(shí)最有可能使用的查詢執(zhí)行計(jì)劃,并顯示流經(jīng)計(jì)劃中多個(gè)運(yùn)算符的估計(jì)行。

    若要使用此功能,用戶必須具有執(zhí)行要為其生成圖形執(zhí)行計(jì)劃的 T-SQL 查詢的適當(dāng)權(quán)限,并且必須向他們授予查詢引用的所有數(shù)據(jù)庫(kù)的 SHOWPLAN 權(quán)限。

    通過(guò) SSMS、EXPLAIN 和 SET SHOWPLAN_XML的估計(jì)執(zhí)行計(jì)劃可用于 Azure Synapse Analytics 中的專用 SQL 池(以前稱為 SQL DW)和專用 SQL 池。

    注意:使用 SET SHOWPLAN_XML返回每個(gè)語(yǔ)句的執(zhí)行計(jì)劃信息而不執(zhí)行它。

    四、顯示實(shí)際執(zhí)行計(jì)劃

    實(shí)際執(zhí)行計(jì)劃是在執(zhí)行 T-SQL 查詢或批處理后生成的。因此,實(shí)際執(zhí)行計(jì)劃包含運(yùn)行時(shí)信息,例如實(shí)際資源使用指標(biāo)和運(yùn)行時(shí)警告(如果有)。生成的執(zhí)行計(jì)劃顯示 SQL Server 數(shù)據(jù)庫(kù)引擎用于執(zhí)行查詢的實(shí)際查詢執(zhí)行計(jì)劃。

    若要使用此功能,用戶必須具有執(zhí)行正在為其生成圖形執(zhí)行計(jì)劃的 Transact-SQL 查詢的適當(dāng)權(quán)限,并且必須向他們授予查詢引用的所有數(shù)據(jù)庫(kù)的 SHOWPLAN 權(quán)限。

    五、以 XML 格式保存執(zhí)行計(jì)劃

    要執(zhí)行計(jì)劃功能或使用 XML 顯示計(jì)劃 SET 選項(xiàng),用戶必須具有執(zhí)行要為其生成執(zhí)行計(jì)劃的 Transact-SQL 查詢的適當(dāng)權(quán)限,并且必須向他們授予查詢引用的所有數(shù)據(jù)庫(kù)的 SHOWPLAN 權(quán)限。

    使用以下語(yǔ)句打開(kāi)SHOWPLAN_XML:

    SET SHOWPLAN_XML ON;  
    GO

    若要打開(kāi)統(tǒng)計(jì)信息 XML,請(qǐng)使用以下語(yǔ)句:

    SET STATISTICS XML ON;  
    GO

    執(zhí)行查詢:

    USE AdventureWorks2012;  
    GO  
    SET SHOWPLAN_XML ON;  
    GO  
    -- Execute a query.  
    SELECT BusinessEntityID   
    FROM HumanResources.Employee  
    WHERE NationalIDNumber = '509647174';  
    GO  
    SET SHOWPLAN_XML OFF;

    六、比較和分析執(zhí)行計(jì)劃

    執(zhí)行計(jì)劃以圖形方式顯示 SQL Server 查詢優(yōu)化器選擇的數(shù)據(jù)檢索方法。執(zhí)行計(jì)劃使用圖標(biāo)而不是 SET SHOWPLAN_ALL或 SET SHOWPLAN_TEXT 語(yǔ)句生成的表格表示形式來(lái)表示 SQL Server 中特定語(yǔ)句和查詢的執(zhí)行開(kāi)銷。這種圖形方法對(duì)于理解查詢的性能特征非常有用。

    SQL Server Management Studio 包含的功能允許用戶比較兩個(gè)執(zhí)行計(jì)劃(例如,同一查詢的感知好計(jì)劃和壞計(jì)劃),并執(zhí)行根本原因分析。還包括執(zhí)行單個(gè)查詢計(jì)劃分析的功能,允許通過(guò)分析查詢的執(zhí)行計(jì)劃來(lái)深入了解可能影響查詢性能的方案。

    6.1、比較執(zhí)行計(jì)劃

    出于故障排除原因,數(shù)據(jù)庫(kù)專業(yè)人員可能必須執(zhí)行比較計(jì)劃的功能:

    • 查找查詢或批處理突然變慢的原因。

    • 了解查詢重寫的影響。

    • 觀察引入架構(gòu)設(shè)計(jì)的特定性能增強(qiáng)更改(如新索引)如何有效地更改執(zhí)行計(jì)劃。

    可以在以下兩者之間進(jìn)行比較:

    • 兩個(gè)以前保存的執(zhí)行計(jì)劃文件(擴(kuò)展名為 .sqlplan)。

    • 一個(gè)活動(dòng)的執(zhí)行計(jì)劃和一個(gè)以前保存的查詢執(zhí)行計(jì)劃。

    • 查詢存儲(chǔ)中的兩個(gè)選定查詢計(jì)劃。

    比較兩個(gè)執(zhí)行計(jì)劃時(shí),計(jì)劃中執(zhí)行基本相同的區(qū)域?qū)⒁韵嗤念伾蛨D案突出顯示。單擊一個(gè)計(jì)劃中的顏色區(qū)域會(huì)將另一個(gè)計(jì)劃居中放在該計(jì)劃中的匹配節(jié)點(diǎn)上。仍然可以比較執(zhí)行計(jì)劃的不匹配運(yùn)算符和節(jié)點(diǎn),但在這種情況下,必須手動(dòng)選擇要比較的運(yùn)算符。

    SQL?Server的執(zhí)行計(jì)劃是什么

    6.2、分析實(shí)際執(zhí)行計(jì)劃

    查詢性能故障排除需要在了解查詢處理和執(zhí)行計(jì)劃方面具有豐富的專業(yè)知識(shí),以便能夠?qū)嶋H查找和修復(fù)根本原因。

    SQL Server Management Studio 包括在實(shí)際執(zhí)行計(jì)劃分析任務(wù)中實(shí)現(xiàn)某種程度自動(dòng)化的功能,尤其是對(duì)于大型和復(fù)雜的計(jì)劃。目標(biāo)是更輕松地查找基數(shù)估計(jì)不準(zhǔn)確的方案,并獲取有關(guān)可能可用的緩解措施的建議。

    讀到這里,這篇“SQL Server的執(zhí)行計(jì)劃是什么”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

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

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI