适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Microsoft Fabric SQL 数据库
智能查询处理 (IQP) 功能系列包含有广泛影响的功能,既能提升现有工作负荷的性能,还能最大限度地减少实现工作量。 下图详细介绍了 IQP 功能系列以及首次在 SQL Server 中引入的时间。 所有 IQP 功能均可在 Azure SQL 托管实例和 Azure SQL 数据库中使用。 某些功能取决于数据库兼容性级别。
观看本视频,大致了解智能查询处理:
有关 GitHub 上智能查询处理 (IQP) 功能的演示和示例代码,请访问 https://aka.ms/IQPDemos。
可以通过对数据库启用适当的数据库兼容性级别使工作负荷自动符合只能查询处理条件。 可使用 Transact-SQL 进行此设置。 例如:
ALTER DATABASE [WideWorldImportersDW] SET COMPATIBILITY_LEVEL = 160;
下表详细列出了所有智能查询处理功能,以及针对数据库兼容性级别必须具备的任何要求。 有关所有 IQP 功能(包括发行说明和更深入的说明)的完整详细信息,请参阅 智能查询处理功能的详细信息。
适用于 Azure SQL 数据库和 SQL Server 2025 预览版的 IQP 功能
IQP 功能 | 在 Azure SQL 数据库中受支持 | SQL Server 2025(17.x) 预览版支持 | 说明 |
---|---|---|---|
优化的万圣节保护 | 否 | 是,从 SQL Server 2025(17.x) 预览版开始,兼容级别为 170 | 通过避免使用缓存作为万圣节保护措施来减少空间消耗并提高查询性能。 |
可选参数计划优化 (OPPO) | 否 | 是,从 SQL Server 2025(17.x) 预览版开始,兼容级别为 170 | 利用参数敏感计划优化(PSPO)改进中引入的自适应计划优化(Multiplan)基础设施,该基础设施能够从单个语句生成多个计划。 该功能可以根据参数 NULL OR NOT NULL 是否在运行时选择更理想的计划,这将改善可能默认为此类查询模式性能欠佳的查询的性能。 |
表达式的基数估计 (CE) 反馈 | 否 | 是的,从 SQL Server 2025 (17.x) 预览版开始,兼容级别为 160 | 扩展 CE 反馈,通过学习以前的执行并自动将适当的 CE 模型选项应用于这些表达式的未来执行,改进跨查询重复表达式的基数估计 |
OPTIMIZED_SP_EXECUTESQL | 是 | 是,从 SQL Server 2025(17.x) 预览版开始 | 有效地减少编译风暴的影响。 编译风暴是指同时编译大量查询导致性能问题和资源争用的情况。 启用此功能以允许从编译角度调用 sp_executesql 的行为与对象(如存储过程和触发器)类似。 |
适用于 Azure SQL 数据库和 SQL Server 2022 的 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 模式。 |
使用查询存储强制执行优化计划 | 是 | 是,从 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% 以上,则减少连续执行的内存授予大小。 |
内存授予反馈(百分位数) | 是,从数据库兼容性级别 160 开始 | 通过合并过去的查询执行来优化反馈,以非侵入性方式解决内存授予反馈的现有限制。 |
内存授予、CE 和 DOP 反馈持久性 | 是,从数据库兼容性级别 160 开始 | 提供新功能持久保留内存授予反馈。 CE 和 DOP 反馈始终保留。 需要为数据库启用查询存储,并将其设置为 READ_WRITE 模式。 |
使用查询存储进行优化的计划强制 | 无 | 减少了重复强制查询的编译开销。 有关详细信息,请参阅使用查询存储优化计划强制。 |
标量 UDF 内联 | 是,从数据库兼容性级别 150 开始 | 标量 UDF 转换为“内联”在调用查询中的等效关系表达式,这通常会大幅提升性能。 |
参数敏感计划优化 | 是,从数据库兼容性级别 160 开始 | 参数敏感性计划优化用于解决这样的情况:一个参数化查询的单个缓存计划对于所有可能传入的参数值并不是最优的,例如,比如非均匀的数据分布。 |
表变量延迟编译 | 是,从数据库兼容性级别 150 开始 | 使用首次编译时遇到的表变量的实际基数,而不是固定的猜测值。 |
SQL Server 2019 的 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 的 IQP 功能
IQP 功能 | 在 SQL Server 2017 (14.x) 中受支持 | 说明 |
---|---|---|
自适应联接(批处理模式) | 是,从 SQL Server 2017 (14.x) 开始,数据库兼容性级别 140 | 自适应联接在运行时期间根据实际输入行自动选择联接类型。 |
非重复近似计数 | 是 | 为大数据方案提供近似 COUNT DISTINCT 值,其优点是高性能和内存占用不足。 |
交错执行 | 是,从数据库兼容性级别 140 开始 | 请使用在首次编译时遇到的多语句表值函数的实际基数,而不是一个固定猜测值。 |
内存授予反馈(批处理模式) | 是,从数据库兼容性级别 140 开始 | 如果批处理模式查询有溢出到磁盘的操作,则需为以后的执行添加更多内存。 如果查询浪费所分配内存的 > 50% 以上,则减少连续执行的内存授予大小。 |
查询存储要求
智能查询处理功能套件中的几个功能要求启用查询存储,以便用户数据库使用。 要启用查询存储,请参阅启用查询存储。
IQP 功能 | 要求启用查询存储,并完成相关配置 READ_WRITE |
---|---|
自适应联接(批处理模式) | 否 |
非重复近似计数 | 否 |
近似百分位数 | 否 |
行存储上的批处理模式 | 否 |
基数估计 (CE) 反馈 | 是 |
并行度 (DOP) 反馈 | 是 |
交错执行 | 否 |
内存授予反馈(批处理模式) | 否 |
内存授予反馈(行模式) | 否 |
内存授予反馈(百分位数和持久性模式) | 是 |
通过查询存储强制执行优化计划 | 是 |
标量 UDF 内联 | 否 |
参数敏感计划优化 | 否,但建议使用 |
表变量延迟编译 | 否 |