关于可用于减轻不良参数嗅探的某些方法,有很多极好的信息,但没有很多关于如何识别不良参数嗅探问题的信息。
假设您没有使用 SQL Server 2016,因此无法利用查询存储,并且您没有用户抱怨有问题的存储过程间歇性地执行不佳,那么可以使用哪些方法来主动识别错误的参数嗅探问题?
利用扩展事件、RML 实用程序和简单地查询/轮询 DMV 似乎都是可行的方法,有没有人有使用这些方法的方法或知道描述如何去做的任何好的资源?
关于可用于减轻不良参数嗅探的某些方法,有很多极好的信息,但没有很多关于如何识别不良参数嗅探问题的信息。
假设您没有使用 SQL Server 2016,因此无法利用查询存储,并且您没有用户抱怨有问题的存储过程间歇性地执行不佳,那么可以使用哪些方法来主动识别错误的参数嗅探问题?
利用扩展事件、RML 实用程序和简单地查询/轮询 DMV 似乎都是可行的方法,有没有人有使用这些方法的方法或知道描述如何去做的任何好的资源?
识别参数嗅探是一项艰苦的工作!使用监控工具或查询可能不明显,因为它通常需要对查询计划的其他执行进行一些分析。
这是 DMV 和计划缓存分析工具(如 sp_BlitzCache)可以提供帮助的地方。你可以在这里下载。完全披露:我为 Brent Ozar 工作,并为该项目做出贡献。
它仅使用您的指南提供的 DMV 来执行计划缓存分析等。它也是免费的。如果您无法安装存储过程,则尝试识别参数嗅探的相关代码位如下:
如果您使用存储过程,则变量是可配置的。如果您想自己推出,如何分配值取决于您。我们要看的是某些计划属性的平均值是否大大超过或者,呃...低于这些属性的最小/最大值。
这些通常是参数嗅探的良好指标。考虑执行 5 次键查找的“小”值计划(并且对于多次执行的大多数值都适用)。如果接下来出现“大”值并使用缓存的计划,迫使键查找执行数十万次,它将使用更多的 cpu/执行更多的读取/运行时间超过平均水平。
希望这可以帮助!