SQL 資料庫中的智慧查詢處理

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

智慧查詢處理 (IQP) 功能系列包含具有廣泛影響的功能,能夠以最少的實作投入量來採用,以改善現有工作負載的效能。 下圖說明了 IQP 功能系列的詳情,以及第一次針對 SQL Server 引進的時機。 所有 IQP 功能都可在 Azure SQL 受控執行個體 和 Azure SQL Database 中使用。 某些功能的實際提供情況,依資料庫的相容性層級而定。

智慧查詢處理功能系列及各項功能何時第一次引進 SQL Server 的圖表。

觀看這段影片,以取得智慧型查詢處理的概觀:

如須查看 GitHub 提供的智慧型查詢處理 (IQP) 功能示範與程式碼範例,請造訪 https://aka.ms/IQPDemos (英文)。

您可以為資料庫啟用適用的資料庫相容性層級,讓工作負載能自動滿足智慧查詢處理的資格。 您可以使用 Transact-SQL 設定此項目。 例如:

ALTER DATABASE [WideWorldImportersDW] SET COMPATIBILITY_LEVEL = 160;

下表詳述了所有智慧查詢處理功能,以及這些功能對於資料庫相容性層級的任何要求。 如需所有 IQP 功能的完整詳細資料,包含版本資訊及更深入的描述,請參閱智慧型查詢處理 (IQP) 功能詳細資料 (機器翻譯)。

適用於 Azure SQL 資料庫 和 SQL Server 2022 (16.x) 的 IQP 功能

IQP 功能 Azure SQL 資料庫不支援 SQL Server 2022 (16.x) 可支援 描述
自適性聯結 (批次模式) 是,從資料庫相容性層級 140 開始 是,SQL Server 2017 (14.x),資料庫相容性層級 140 開始 自適性聯結會在執行階段,依據實際輸入列而機動選取聯結類型。
近似的相異計數 是,從 SQL Server 2019 (15.x) 開始 為巨量資料案例提供約略的 COUNT DISTINCT,享有高效能及低磁碟使用量的好處。
近似百分位數 是,從資料庫相容性層級 110 開始 是,從 SQL Server 2022 (16.x),相容性層級 110 開始 快速計算具有可接受排名型錯誤界限的大型資料集百分位數,以協助使用近似百分位數彙總函式,來做出快速決策。
資料列存放區上的批次模式 是,從資料庫相容性層級 150 開始 是,從 SQL Server 2019 (15.x),相容性層級 150 開始 為耗用大量 CPU 的關聯式 DW 工作負載提供批次模式,而且不需要資料行存放區索引。
基數估計 (CE) 意見反應 是,從 SQL Server 2022 (16.x),相容性層級 160 開始 自動調整重複查詢的基數估計值,以將無效率 CE 假設造成查詢效能不佳的工作負載最佳化。 CE 意見反應會識別並使用更符合指定查詢和資料分散的模型假設,以改善查詢執行計畫品質。
平行處理原則程度 (DOP) 意見反應 是,從 SQL Server 2022 (16.x),相容性層級 160 開始 會自動調整重複查詢的平行處理原則程度,將平行處理原則效率不佳而可能導致效能問題的工作負載最佳化。 必須啟用查詢存放區。
交錯執行 是,從資料庫相容性層級 140 開始 是,SQL Server 2017 (14.x),資料庫相容性層級 140 開始 使用在第一次編譯時,所遇到的多重陳述式資料表值函式實際基數,而不是定點猜測。
記憶體授與意見反應 (批次模式) 是,從資料庫相容性層級 140 開始 是,SQL Server 2017 (14.x),資料庫相容性層級 140 開始 若批次模式查詢有作業會溢出到磁碟,請新增記憶體以防執行中斷。 若查詢耗用了 > 50% 配置給自身的記憶體,請縮減記憶體授與大小,以防執行中斷。
記憶體授與意見反應 (資料列模式) 是,從資料庫相容性層級 150 開始 是,SQL Server 2019 (15.x),資料庫相容性層級 150 開始 若資料列模式查詢有作業會溢出到磁碟,請新增記憶體以防執行中斷。 若查詢耗用了 > 50% 配置給自身的記憶體,請縮減記憶體授與大小,以防執行中斷。
記憶體授與意見反應 (百分位數) 是,所有資料庫均已啟用 是,從 SQL Server 2022 (16.x),資料庫相容性層級 140 開始 藉由合併過去查詢執行來精簡意見反應,解決記憶體授與意見反應的現有限制。
記憶體授與意見反應持續性 是,所有資料庫均已啟用 是,從 SQL Server 2022 (16.x),資料庫相容性層級 140 開始 可提供新功能來保存記憶體授與意見反應。 要求針對資料庫和 READ_WRITE 模式啟用查詢存放區。
CE 意見反應持續性 是,從 SQL Server 2022 (16.x),資料庫相容性層級 160 開始 要求針對資料庫和 READ_WRITE 模式啟用查詢存放區。
DOP 意見反應持續性 是,從 SQL Server 2022 (16.x),資料庫相容性層級 160 開始 要求針對資料庫和 READ_WRITE 模式啟用查詢存放區。
最佳化強制執行計劃 是,從 SQL Server 2022 (16.x) 開始。 減少重複強制查詢的編譯額外負荷。 如需詳細資訊,請參閱使用查詢存放區強制進行最佳化計畫 (機器翻譯)。
純量 UDF 內嵌 是,從資料庫相容性層級 150 開始 是,SQL Server 2019 (15.x),資料庫相容性層級 150 開始 純量 UDF 會被轉換成「內嵌」在呼叫查詢中的對等關聯運算式,而這通常可讓效能大幅提升。
參數敏感度計畫最佳化 是,從 SQL Server 2022 (16.x),資料庫相容性層級 160 開始 如進行參數敏感度計畫最佳化,在參數化查詢採用單一快取計畫,但對於所有可能的傳入參數值而言並非最佳選項,則上述功能可處理此種案例,例如非統一資料分散的情況。
資料表變數延後編譯 是,從資料庫相容性層級 150 開始 是,SQL Server 2019 (15.x),資料庫相容性層級 150 開始 可使用在第一次編譯時遇到的資料表值函式實際基數,而不是定點猜測。

Azure SQL 受控執行個體的 IQP 功能

IQP 功能 Azure SQL 受控執行個體支援 描述
自適性聯結 (批次模式) 是,從資料庫相容性層級 140 開始 自適性聯結會在執行階段,依據實際輸入列而機動選取聯結類型。
近似的相異計數 為巨量資料案例提供約略的 COUNT DISTINCT,享有高效能及低磁碟使用量的好處。
近似百分位數 是,從資料庫相容性層級 110 開始 快速計算具有可接受排名型錯誤界限的大型資料集百分位數,以協助使用近似百分位數彙總函式,來做出快速決策。
資料列存放區上的批次模式 是,從資料庫相容性層級 150 開始 為耗用大量 CPU 的關聯式 DW 工作負載提供批次模式,而且不需要資料行存放區索引。
基數估計 (CE) 意見反應 自動調整重複查詢的基數估計值,以將無效率 CE 假設造成查詢效能不佳的工作負載最佳化。 CE 意見反應會識別並使用更符合指定查詢和資料分散的模型假設,以改善查詢執行計畫品質。
平行處理原則程度 (DOP) 意見反應 會自動調整重複查詢的平行處理原則程度,將平行處理原則效率不佳而可能導致效能問題的工作負載最佳化。 必須啟用查詢存放區。
交錯執行 是,從資料庫相容性層級 140 開始 使用在第一次編譯時,所遇到的多重陳述式資料表值函式實際基數,而不是定點猜測。
記憶體授與意見反應 (批次模式) 是,從資料庫相容性層級 140 開始 若批次模式查詢有作業會溢出到磁碟,請新增記憶體以防執行中斷。 若查詢耗用了 > 50% 配置給自身的記憶體,請縮減記憶體授與大小,以防執行中斷。
記憶體授與意見反應 (資料列模式) 是,從資料庫相容性層級 150 開始 若資料列模式查詢有作業會溢出到磁碟,請新增記憶體以防執行中斷。 若查詢耗用了 > 50% 配置給自身的記憶體,請縮減記憶體授與大小,以防執行中斷。
記憶體授與意見反應 (百分位數) 藉由合併過去查詢執行來精簡意見反應,解決記憶體授與意見反應的現有限制。
記憶體授與、CE 和 DOP 意見反應持續性 是,從資料庫相容性層級 160 開始 可提供新功能來保存記憶體授與意見反應。 一律會持續 CE 和 DOP 意見反應。 要求針對資料庫和 READ_WRITE 模式啟用查詢存放區。
最佳化強制執行計劃 減少重複強制查詢的編譯額外負荷。 如需詳細資訊,請參閱使用查詢存放區強制進行最佳化計畫 (機器翻譯)。
純量 UDF 內嵌 是,從資料庫相容性層級 150 開始 純量 UDF 會被轉換成「內嵌」在呼叫查詢中的對等關聯運算式,而這通常可讓效能大幅提升。
參數敏感度計劃最佳化 如進行參數敏感度計畫最佳化,在參數化查詢採用單一快取計畫,但對於所有可能的傳入參數值而言並非最佳選項,則上述功能可處理此種案例,例如非統一資料分散的情況。
資料表變數延後編譯 是,從資料庫相容性層級 150 開始 可使用在第一次編譯時遇到的資料表值函式實際基數,而不是定點猜測。

SQL Server 2019 (15.x) 的 IQP 功能

IQP 功能 SQL Server 2019 (15.x) 可支援 描述
自適性聯結 (批次模式) 是,SQL Server 2017 (14.x),資料庫相容性層級 140 開始 自適性聯結會在執行階段,依據實際輸入列而機動選取聯結類型。
近似的相異計數 為巨量資料案例提供約略的 COUNT DISTINCT,享有高效能及低磁碟使用量的好處。
資料列存放區上的批次模式 是,從資料庫相容性層級 150 開始 為耗用大量 CPU 的關聯式 DW 工作負載提供批次模式,而且不需要資料行存放區索引。
交錯執行 是,從資料庫相容性層級 140 開始 使用在第一次編譯時遇到的多重陳述式資料表值函式實際基數,而不是定點猜測。
記憶體授與意見反應 (批次模式) 是,從資料庫相容性層級 140 開始 若批次模式查詢有作業會溢出到磁碟,請新增記憶體以防執行中斷。 若查詢耗用了 > 50% 配置給自身的記憶體,請縮減記憶體授與大小,以防執行中斷。
記憶體授與意見反應 (資料列模式) 是,從資料庫相容性層級 150 開始 若資料列模式查詢有作業會溢出到磁碟,請新增記憶體以防執行中斷。 若查詢耗用了 > 50% 配置給自身的記憶體,請縮減記憶體授與大小,以防執行中斷。
純量 UDF 內嵌 是,從資料庫相容性層級 150 開始 純量 UDF 會被轉換成「內嵌」在呼叫查詢中的對等關聯運算式,而這通常可讓效能大幅提升。
資料表變數延後編譯 是,從資料庫相容性層級 150 開始 使用在第一次編譯時遇到的資料表值函式實際基數,而不是定點猜測。

SQL Server 2017 (14.x) 的 IQP 功能

IQP 功能 SQL Server 2017 (14.x) 可支援 描述
自適性聯結 (批次模式) 是,SQL Server 2017 (14.x),資料庫相容性層級 140 開始 自適性聯結會在執行階段,依據實際輸入列而機動選取聯結類型。
近似的相異計數 為巨量資料案例提供約略的 COUNT DISTINCT,享有高效能及低磁碟使用量的好處。
交錯執行 是,從資料庫相容性層級 140 開始 使用在第一次編譯時遇到的多重陳述式資料表值函式實際基數,而不是定點猜測。
記憶體授與意見反應 (批次模式) 是,從資料庫相容性層級 140 開始 若批次模式查詢有作業會溢出到磁碟,請新增記憶體以防執行中斷。 若查詢耗用了 > 50% 配置給自身的記憶體,請縮減記憶體授與大小,以防執行中斷。

查詢存放區需求

有數個智慧型查詢處理功能套件都需要啟用查詢存放區,才能讓使用者資料庫受益。 若要啟用查詢存放區,請參閱啟用查詢存放區 (機器翻譯)。

IQP 功能 要求啟用查詢存放區和 READ_WRITE
自適性聯結 (批次模式) No
近似的相異計數 No
近似百分位數 No
資料列存放區上的批次模式 No
基數估計 (CE) 意見反應 Yes
平行處理原則程度 (DOP) 意見反應 Yes
交錯執行 No
記憶體授與意見反應 (批次模式) No
記憶體授與意見反應 (資料列模式) No
記憶體授與意見反應(百分位數和持續性模式) Yes
最佳化強制執行計劃 Yes
純量 UDF 內嵌
參數敏感度計劃最佳化 否,但建議使用
資料表變數延後編譯 No

如需所有 IQP 功能的完整詳細資料,包含版本資訊及更深入的描述,請參閱智慧型查詢處理 (IQP) 功能詳細資料 (機器翻譯)。