SQL 資料庫中的智慧查詢處理
適用於: SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體
智慧查詢處理 (IQP) 功能系列包含具有廣泛影響的功能,能夠以最少的實作投入量來採用,以改善現有工作負載的效能。 下圖說明了 IQP 功能系列的詳情,以及第一次針對 SQL Server 引進的時機。 所有 IQP 功能都可在 Azure SQL 受控執行個體 和 Azure SQL Database 中使用。 某些功能的實際提供情況,依資料庫的相容性層級而定。
觀看這段影片,以取得智慧型查詢處理的概觀:
如須查看 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) 意見反應 | 是,從資料庫相容性層級 160 開始 | 是,從 SQL Server 2022 (16.x),相容性層級 160 開始 | 自動調整重複查詢的基數估計值,以將無效率 CE 假設造成查詢效能不佳的工作負載最佳化。 CE 意見反應會識別並使用更符合指定查詢和資料分散的模型假設,以改善查詢執行計畫品質。 |
平行處理原則程度 (DOP) 意見反應 | 是,在預覽版中,從資料庫相容性層級 160 開始 | 是,從 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 意見反應持續性 | 是,從資料庫相容性層級 160 開始 | 是,從 SQL Server 2022 (16.x),資料庫相容性層級 160 開始 | 要求針對資料庫和 READ_WRITE 模式啟用查詢存放區。 |
DOP 意見反應持續性 | 是,在預覽版中,從資料庫相容性層級 160 開始 | 是,從 SQL Server 2022 (16.x),資料庫相容性層級 160 開始 | 要求針對資料庫和 READ_WRITE 模式啟用查詢存放區。 |
最佳化強制執行計劃 | Yes | 是,從 SQL Server 2022 (16.x) 開始。 | 減少重複強制查詢的編譯額外負荷。 如需詳細資訊,請參閱使用查詢存放區強制進行最佳化計畫 (機器翻譯)。 |
純量 UDF 內嵌 | 是,從資料庫相容性層級 150 開始 | 是,SQL Server 2019 (15.x),資料庫相容性層級 150 開始 | 純量 UDF 會被轉換成「內嵌」在呼叫查詢中的對等關聯運算式,而這通常可讓效能大幅提升。 |
參數敏感度計畫最佳化 | 是,從資料庫相容性層級 160 開始 | 是,從 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) 意見反應 | 是,從資料庫相容性層級 160 開始 | 自動調整重複查詢的基數估計值,以將無效率 CE 假設造成查詢效能不佳的工作負載最佳化。 CE 意見反應會識別並使用更符合指定查詢和資料分散的模型假設,以改善查詢執行計畫品質。 |
平行處理原則程度 (DOP) 意見反應 | 否 | 會自動調整重複查詢的平行處理原則程度,將平行處理原則效率不佳而可能導致效能問題的工作負載最佳化。 必須啟用查詢存放區。 |
交錯執行 | 是,從資料庫相容性層級 140 開始 | 使用在第一次編譯時,所遇到的多重陳述式資料表值函式實際基數,而不是定點猜測。 |
記憶體授與意見反應 (批次模式) | 是,從資料庫相容性層級 140 開始 | 若批次模式查詢有作業會溢出到磁碟,請新增記憶體以防執行中斷。 若查詢耗用了 > 50% 配置給自身的記憶體,請縮減記憶體授與大小,以防執行中斷。 |
記憶體授與意見反應 (資料列模式) | 是,從資料庫相容性層級 150 開始 | 若資料列模式查詢有作業會溢出到磁碟,請新增記憶體以防執行中斷。 若查詢耗用了 > 50% 配置給自身的記憶體,請縮減記憶體授與大小,以防執行中斷。 |
記憶體授與意見反應 (百分位數) | 否 | 藉由合併過去查詢執行來精簡意見反應,解決記憶體授與意見反應的現有限制。 |
記憶體授與、CE 和 DOP 意見反應持續性 | 是,從資料庫相容性層級 160 開始 | 可提供新功能來保存記憶體授與意見反應。 一律會持續 CE 和 DOP 意見反應。 要求針對資料庫和 READ_WRITE 模式啟用查詢存放區。 |
最佳化強制執行計劃 | 否 | 減少重複強制查詢的編譯額外負荷。 如需詳細資訊,請參閱使用查詢存放區強制進行最佳化計畫 (機器翻譯)。 |
純量 UDF 內嵌 | 是,從資料庫相容性層級 150 開始 | 純量 UDF 會被轉換成「內嵌」在呼叫查詢中的對等關聯運算式,而這通常可讓效能大幅提升。 |
參數敏感度計劃最佳化 | 是,從資料庫相容性層級 160 開始 | 如進行參數敏感度計畫最佳化,在參數化查詢採用單一快取計畫,但對於所有可能的傳入參數值而言並非最佳選項,則上述功能可處理此種案例,例如非統一資料分散的情況。 |
資料表變數延後編譯 | 是,從資料庫相容性層級 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) 功能詳細資料 (機器翻譯)。