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

適用于:SQL Server (所有支援的版本) Azure SQL Database Azure SQL 受控執行個體

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

智慧型查詢處理系列功能的圖表,以及第一次引進SQL Server時。

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

如需智慧型查詢處理的示範和範例程式碼 (,請參閱 GitHub https://aka.ms/IQPDemos 上的 IQP) 功能。

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

ALTER DATABASE [WideWorldImportersDW] SET COMPATIBILITY_LEVEL = 150;

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

Azure SQL 資料庫的 IQP 功能、Azure SQL 受控執行個體、SQL Server 2022 (16.x)

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

另請參閱

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

下一步