我们有一个生产应用程序,运行正常,但给我们很差的表现这周。由于非常紧急,我确定了有问题的过程并对其运行了sp_recompile (忘了先采取计划)。
运行sp_recompile后,系统又恢复了运行速度。对我来说,这表明了一个参数嗅探问题。然而,由于我忘了先采取一个计划,很难百分之百肯定。还有其他的解释,sp_recompile可以显着地加快性能吗?
我们使用Azure SQL只读副本。
发布于 2021-06-04 14:13:43
这可能是参数嗅探,但是文档 for sp_recompile确实注意到性能也会因为其他原因而下降:
存储过程、触发器和用户定义函数所使用的查询只有在编译时才能得到优化。随着对数据库进行索引或其他影响统计信息的更改,已编译的存储过程、触发器和用户定义的函数可能会失去效率。通过重新编译作用于表的存储过程和触发器,可以重新优化查询。
但是,这并不是说上面的一些事情不会触发自动重新编译。事实上,其中的大多数应该触发重新编译,这就是为什么我不会花太多的时间去看这条路。
根据您的版本,启用查询存储可能使跟踪回归变得更容易,而无需手动捕获计划。
如果没有查询计划,存储过程本身,等等,在这种情况下,我将默认假设参数嗅探,直到再次发生。我不相信没有更多的细节可以谈论更多。
https://dba.stackexchange.com/questions/293779
复制相似问题