我注意到一些DBA非常频繁地重新启动SQL Server,有时甚至每晚重新启动一次。我相信他们这样做是为了释放一些内存,或者也可能加快查询速度。我知道重启后必须重新编译查询计划,但是即使包括在内,我也想知道这种做法是否有净收益。
每天重新启动SQL Server会使其运行速度更快吗?
我注意到一些DBA非常频繁地重新启动SQL Server,有时甚至每晚重新启动一次。我相信他们这样做是为了释放一些内存,或者也可能加快查询速度。我知道重启后必须重新编译查询计划,但是即使包括在内,我也想知道这种做法是否有净收益。
每天重新启动SQL Server会使其运行速度更快吗?
Answers:
重新启动服务器可能是性能上最具破坏性的事情之一。这意味着您要为数据强制使用冷缓存,对查询计划强制使用冷缓存,并且在此过程中,所有SQL Server内部缓存也会受到影响。更不用说丢弃所有运行统计DMV中收集的统计信息,可以减少成功进行调查的机会。
没有官方的指导来支持这种做法,我从未在任何良好实践的声誉良好的工作中提到过它,也从未听说过有声誉的专家将这种做法提及为现实。不要这样
尽管其他答案很好,但它们却缺少了一个重要的方面:Windows的文件缓存。
在64位Windows上,Windows用于缓存文件的内存量没有上限。Windows可能会耗尽系统的所有内存,这时,您将开始交换到磁盘。已经在一些地方进行了记录:
通过重新启动SQL Server,您可以强制SQL放弃内存,从而使Windows获得更多内存,并且分页会暂时停止。SQL将在接近零内存使用时再次启动,然后逐渐上升,并且当存储框再次用尽内存时,重新启动将暂时提供帮助。通过重新启动整个操作系统,您还将迫使Windows的文件缓存使用率降低。
真正的解决方法:停止从Windows服务器复制文件,或限制动态文件缓存服务使用的文件缓存量,如上述博客文章中所述。
如果它加快查询速度,则可能涉及参数嗅探。如果将废话计划缓存并应用于不适当的后续调用,那么重新启动的奇迹将使通用/正确的计划得以缓存。如果是这种情况,那么还有其他许多其他更好的纠正行为的方法。但是,直到他们停止重新启动包装盒之后,才可以执行根本原因分析。
我同意这样的观点,即如果您做的一切正确,则可能不需要重新启动/重新启动MSSQL Server。
对我来说,这适用于每个人都有能力并且您可以解决任何问题的方案。
我不是DBA。我是一个软件架构师和涉及从头开始构建整个数据库模式和的一部分,不幸的是,与第三方数据库的工作,我绝对NO控制权。
创建和维护我们主要的第三方数据库之一的人们几乎没有使其发挥作用。
我是否提到我也不是安全专家或网络工程师?
对我来说,问题变成了:我是否应该每3个月重新启动SQL Server一次?
计划重新启动以实现更高的性能,就像在雨中跳舞一样。
也许会来,也许不会,但是您不会确定是什么导致下雨。
我不想说您从不需要重新启动它来解决问题或验证故障转移,但在安排重新启动以防止未知性能问题随机发生方面确实存在问题。
在只有例外的情况是,如果你管理一个流氓第三方数据库每周都在那里重新启动它或两个似乎只有这样才能保持它的工作,你不准修复,甚至触摸它。
即使这样,您也应该寻找修补程序,与所有者共享,然后解决该问题。