在 SQL Server 2022 中使用参数敏感计划优化来解决参数敏感性问题

主要观点:多年来 SQL Server 数据库管理员和开发者面临参数嗅探这一性能问题,其因传统查询计划缓存机制仅为参数化查询生成一个执行计划,基于首次执行的参数值,导致参数值差异大时性能严重下降,需通过查询提示等 workaround 解决,SQL Server 2022 引入参数敏感计划优化(PSP)以消除参数嗅探的低效,自动为单个参数化查询创建和缓存多个执行计划,基于运行时参数值选择最佳计划,提升性能。

关键信息

  • 参数嗅探:SQL Server 传统缓存机制仅生成一个执行计划,基于首次参数值,参数值差异大时性能下降。
  • PSP 介绍:SQL Server 2022 引入,为单参数化查询创建缓存多个执行计划,基于参数值选择最佳,消除参数嗅探低效。
  • 验证 PSP:启用 Query Store 和设置兼容性级别为 160,创建并填充Sales表,定义并执行存储过程,通过查询观察 PSP 活动和验证,对比前后性能。
  • 结论:PSP 解决参数嗅探问题,提升查询稳定性,减少手动调优需求,适用于特定查询形状和有数据倾斜的 OLTP 环境,DBAs 可通过启用 PSP 和监控 Query Store 确保性能。

重要细节

  • 如在Sales表中,RegionID列一个区域占 90%数据,存储过程按RegionID过滤数据在 PSP 前性能差,PSP 后缓存不同优化计划提升性能。
  • 验证 PSP 时通过查看缓存计划、查询存储运行时统计、启用详细统计等操作,对比前后执行时间和逻辑读取等指标。
阅读 267
0 条评论