我正在制定从不再在公司工作的人那里继承的更新程序。
我发现程序在 header 后包含 WITH RECOMPILE
选项。在注释中它说添加它是“为了减轻阻塞造成的超时”
ALTER PROC ups_SomeProc (@pMyParameter INT) WITH RECOMPILE
AS
BEGIN
根据我的经验,我从未听说过 WITH RECOMPILE
选项有助于阻止,甚至与阻止以任何方式相关。
我是否对这个选项缺少一些理解,或者实现它的人对它的作用感到困惑?有人听说过这个作为阻止的解决方案吗?
注意:这是在服务器仍在运行 SQL Sever 2008 版本时完成的。
最佳答案
OPTION WITH RECOMPILE
强制 Sql Server 重新编译执行计划,即使内存中缓存了现有计划。
如果底层数据发生巨大且非常快的变化,则缓存的执行计划的效率就会降低。因此,在这种情况下,使用 WITH RECOMPILE
选项执行过程的速度比使用已编译的执行计划的执行速度要快得多。
我猜测开发人员/人员在执行存储过程时经历了一些长时间的延迟。当他使用 WITH RECOMPILE
选项时,它的执行速度更快。所以也许他认为在没有重新编译选项的情况下执行这个过程会导致阻塞。 :) 有趣的故事,但我认为这就是发生的事情。
关于sql - 选项 "WITH RECOMPILE"可用于减少阻塞超时吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22157682/