主要观点:多年来 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 时通过查看缓存计划、查询存储运行时统计、启用详细统计等操作,对比前后执行时间和逻辑读取等指标。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。