【问题标题】:When does a SQL Server stored procedure cache?SQL Server 存储过程何时缓存?
【发布时间】:2016-01-14 01:02:05
【问题描述】:

(作为 .Net 开发人员而不是 DBA)。

我读过很多地方 SQL 缓存存储过程,或者更准确地说缓存执行计划(根据执行计划,我假设这是 SP 的预编译版本)。

SP 执行计划什么时候被替换?

例如我用某个参数调用和 SP。 我更改了 SP 代码。 我再次用某个参数调用 SP。

新的 SP 是否在第一次调用时被缓存? 如果我改变参数的值是使用缓存的执行计划吗?

请不要给我另一个为 DBA 编写的 SQL 文章的链接。

【问题讨论】:

  • “请不要给我指向另一篇为 DBA 编写的 SQL 文章的链接” - 如果你想了解某些东西是如何工作的,就像其他一切一样,你需要阅读docs

标签: .net sql-server caching stored-procedures


【解决方案1】:

只要不存在计划缓存,就会生成计划缓存。这意味着您第一次创建和运行 SP 时,将创建一个缓存。

如果您更改要提交给 SP 的参数的值,则此不会更新缓存。缓存计划的全部意义在于不必在每次调用 SP 时都重新生成它。然而,这可能会导致参数嗅探出现问题。

您可以通过运行来强制重新生成 SP 的计划:

EXEC sp_recompile PROCEDURENAME

所有这些信息(以及更多信息)都可以在这里找到:Kimberly Tripp discusses cached plans

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2010-11-23
    相关资源
    最近更新 更多