暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

[译文] SQL SERVER – 参数嗅探和错误计划

原创 Pinal Dave 2021-08-06
945

有一天,综合数据库性能健康检查的客户提出了另一个有趣的问题——禁用参数嗅探后,我们是否仍然得到一个糟糕的计划?

图片.png

是的,禁用参数嗅探后可能会得到错误的执行计划。

好吧,让我们现在讨论一下。很多人认为参数嗅探是错误执行计划的根本原因。然而,事实远非如此。真正的罪魁祸首是执行计划缓存本身。当您继续嗅探参数时,SQL Server 引擎会获取传递给查询或存储过程的第一个参数并构建计划。后来,它大部分时间使用相同的计划来处理类似的查询。

当您关闭参数嗅探时,SQL Server 将密度向量或固定值作为对最佳可能值的猜测。一旦使用这个所谓的平均值构建执行计划,执行计划就会缓存在内存中并用于未来的值。本质上,当您关闭数据库范围配置的参数嗅探时,它只是告诉 SQL Server 引擎使用参数可用的平均值。

简而言之,如果您有一个参数嗅探 ON 或 OFF,则总有可能您最终会得到一个糟糕的计划。没有替代OPTION (RECOMPILE)。

如果你喜欢这个博客,请不要忘记订阅我的 YouTube 频道 ——SQL 60 秒

文章来源:https://blog.sqlauthority.com/2021/08/05/sql-server-parameter-sniffing-and-bad-plan/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论