首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是什么触发了数据库中没有触发器、存储过程等的sp_recompile?

是什么触发了数据库中没有触发器、存储过程等的sp_recompile?
EN

Database Administration用户
提问于 2018-12-17 17:15:32
回答 1查看 331关注 0票数 4

在只有表和索引的数据库中(即没有存储过程、函数、触发器等)。我们收到对sp_recompile的调用,该调用会随机阻塞表选择/更新(即每月一次,但在高度事务性的系统中)。通过追踪捕捉到这一点一直是个挑战。本地DBA似乎只捕获阻塞锁树中的语句。据我理解,Server使用了其他一些方法(即。而不是直接调用sp_recompile),以便在计划缓存/对象更新/老化需要时触发内部重新编译。

从联机书籍中可以看到,您可以使用表对象调用sp_recompile,该对象触发级联标志更改,以便在下次执行时重新编译任何相关的对象,但这似乎指向其他DB对象,而不是表和索引。那么,是否有人知道Server是否直接调用/触发sp_recompile

EN

回答 1

Database Administration用户

发布于 2019-12-27 21:24:52

Server引擎不显式调用sp_recompile以从缓存中删除计划。据我所知。SQL Server可能会有这样的特性,但我还没有听说过。

最有可能的罪魁祸首是某些个人或用户进程正在调用sp_recompile。希望您可以调优您提到的跟踪过程,以捕获执行此调用的用户。

我最近注意到,在表或视图上调用它需要在该表或视图上使用SCH-M锁,这将解释阻塞(在此锁就位的情况下,不能对表进行读或写)。在我可以访问的系统上不需要很长时间,所以我不知道为什么会导致很长一段时间的阻塞。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/225183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档