0

SQL 服务器在 SQL 服务重新启动时删除所有执行计划。在我们重新启动服务之前,有什么办法可以保存这些?

4

1 回答 1

2

不。

您可以提供的最接近的东西是计划指南,但即使使用计划指南,服务器也必须在重新启动后第一次提交时重新编译每个查询。计划指南理论上可以减少查询编译期间所需的工作量。

正如 Martin 建议的那样,如果您想进行分析,您可以提取有关查询计划的信息,但以后不能将这些信息放回:

SELECT query_plan FROM sys.dm_exec_cached_plans CROSS APPLY sys.dm_exec_query_plan(plan_handle)

如果您真的很担心,请设置一组查询以在服务重新启动后运行,以填充计划缓存。但我认为这是浪费时间。

SQL Server 服务将关闭这一事实意味着用户将遇到中断。这已经需要计划和沟通。了解这种重新启动的影响比仅仅在重新启动期间的拒绝服务具有更大的范围 - 最初的几分钟使用可能很慢 - 只需稍微改变您的计划和沟通。如果某种理论上的缓慢是一个大问题,您将不得不更仔细地计划停机时间或等待更合适的时间——也许是凌晨 2 点而不是下午 2 点。

我说“理论上的缓慢”是因为没有人会在之后重新编译查询时遇到任何真正的问题。查询通常编译得非常快。

于 2012-12-04T19:12:44.583 回答