Beg*_*DBA 4 sql-server sql-server-2014 sql-server-2017 parameter-sniffing
对于几个场景,我们很少看到在存储过程上执行 sp_recompile 以提高性能。
作为一名 DBA,我了解执行 sp_recompile 时涉及的一些注意事项以及为什么它可以提高性能。
我们的管理层一直在争论,当他们看到上述性能问题时,为应用程序/开发 DBA 提供执行 sp 重新编译的访问权限。只是为了减少 DBA 的参与,APP 开发人员可以在性能问题期间继续运行
我很犹豫,因为我认为它会带来一些不需要的行为,有时甚至会恶化其他 proc 的性能。
我正在寻求专家的一般指导和经验,为什么这在可能的不同情况下或在理想情况下可能是个坏主意。您的输入可能会帮助我设计,并可能以不同的方式解释该方法。
仅供参考 - 在看到参数嗅探等问题时,上述问题不仅被认为是一个应用程序,而且被认为是其他少数应用程序的自动化。
丢失的一件事sp_recompile
是它适用于存储过程之外的对象。从文档:
当前数据库中存储过程、触发器、表、视图或用户定义函数的限定或非限定名称
如果有人在脑海中产生一个奇怪的想法,他们最终可能会影响不止一个程序:
如果 object 是表或视图的名称,则所有引用该表或视图的存储过程、触发器或用户定义的函数将在下次运行时重新编译。
如果开发人员已经有能力使用其他风格的重新编译提示,最好让他们在适当的时候使用这些提示,但也要教育他们重新编译的范围的差异,以及他们如何处理参数:
对于至少运行 SQL Server 2008 build 2746(Service Pack 1 with Cumulative Update 5)的实例,使用 OPTION (RECOMPILE) 比 WITH RECOMPILE 具有另一个显着优势:只有 OPTION (RECOMPILE) 启用参数嵌入优化。
一般来说,WITH RECOMPILE
应该避免——这是一种非常严厉的方法。我赞成使用重新编译提示来临时解决问题,或者当其他潜在的问题解决方案没有吸引力时。
归档时间: |
|
查看次数: |
360 次 |
最近记录: |