在重新启动SQL服务之前保存执行计划?甚至可以这样做吗?

时间:2012-12-04 17:54:47

标签: sql-server-2008

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

1 个答案:

答案 0 :(得分:2)

没有

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

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

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

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

SQL Server服务失效的事实意味着用户将遇到中断。这已经需要规划和沟通。了解这种重启效果的范围大于重启时间内的拒绝服务 - 使用的前几分钟可能很慢 - 只需稍微改变您的计划和沟通。如果某种理论上的缓慢是一个大问题,你必须更仔细地计划停机时间或等待更合适的时间 - 凌晨2点而不是下午2点。

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