重新启动 SQL 服务(在机器上)是否会清除服务器缓存(用于查询计划和统计信息)?

J.D*_*.D. 8 sql-server statistics sql-server-2008-r2 cache plan-cache

当您仅重新启动 SQL 服务本身时,服务器缓存是否会被擦除(类似于重新启动 SQL 实例/机器时)?

Aar*_*and 16

单独重新启动服务或由于重新启动底层操作系统而重新启动服务之间的行为没有区别。在这种重新启动时会擦除哪些信息?

  • 查询计划?是的。
  • 表/索引数据?是的。
  • 统计数据?不。

(使用统计信息的查询计划必须重新编译,但不必重新创建统计信息,除非还有一些事件或条件触发它(有几个)。

如果您在事务回滚时停止服务,您可能没有完成任何事情,因为回滚可能只是从它停止的地方重新开始(或者它可能必须完全重新开始,具体取决于正在获取的活动类型回滚)。

如果您因为迫不及待地等待回滚完成而重新启动服务,这可能是一个代价高昂的课程,您只需执行一两次就可以停止尝试。看:


Lau*_*gil 13

是的,它确实。由于 SQL Server 负责维护这些缓存,因此当您关闭 SQL Server 的服务时,它会将内存释放回操作系统。

  • 数据库总是以恢复状态开始,但恢复通常很快,因此您不会发现它。(有一个例外,mdf 文件中有一点说明干净的数据库关闭,但您应该从概念上考虑数据库是否总是以恢复状态启动)。恢复阶段可能需要很长时间,如果您有大量回滚,即您现在可能会注意到这种状态。但是您也可能遇到恢复问题,例如丢失数据库文件,并且您现在将遇到“恢复挂起”(这不会自行解决)。 (3认同)