重新启动SQL Server会加快速度吗?


22

我注意到一些DBA非常频繁地重新启动SQL Server,有时甚至每晚重新启动一次。我相信他们这样做是为了释放一些内存,或者也可能加快查询速度。我知道重启后必须重新编译查询计划,但是即使包括在内,我也想知道这种做法是否有净收益。

每天重新启动SQL Server会使其运行速度更快吗?

Answers:


37

重新启动服务器可能是性能上最具破坏性的事情之一。这意味着您要为数据强制使用冷缓存,对查询计划强制使用冷缓存,并且在此过程中,所有SQL Server内部缓存也会受到影响。更不用说丢弃所有运行统计DMV中收集的统计信息,可以减少成功进行调查的机会。

没有官方的指导来支持这种做法,我从未在任何良好实践的声誉良好的工作中提到过它,也从未听说过有声誉的专家将这种做法提及为现实。不要这样


我不同意。SQL Server托管在Windows服务器上,其中安全补丁和MS升级要求定期重新启动。我相信更好的SQL设计是解决性能问题的关键,而不是依赖服务器重新启动,但有时这是必要的步骤。
Fandango68

27

尽管其他答案很好,但它们却缺少了一个重要的方面:Windows的文件缓存。

在64位Windows上,Windows用于缓存文件的内存量没有上限。Windows可能会耗尽系统的所有内存,这时,您将开始交换到磁盘。已经在一些地方进行了记录:

通过重新启动SQL Server,您可以强制SQL放弃内存,从而使Windows获得更多内存,并且分页会暂时停止。SQL将在接近零内存使用时再次启动,然后逐渐上升,并且当存储框再次用尽内存时,重新启动将暂时提供帮助。通过重新启动整个操作系统,您还将迫使Windows的文件缓存使用率降低。

真正的解决方法:停止从Windows服务器复制文件,或限制动态文件缓存服务使用的文件缓存量,如上述博客文章中所述。


3
+1知道了这个问题,不知道使用动态缓存服务可能会限制缓存。
Mark Storey-Smith,

将内存“固定”到MIN和MAX的做法(尽管它们应该并且可能是完全相同的KB量)是否有助于确保SQL Server仅消耗预定义量的MIN / MAX RAM,从而允许其他Windows服务/应用程序/网络请求继续起作用。这是我的做法,效果很好。还有其他想法吗?
SnapJag

@SnapJag-不一定,因为SQL不会立即消耗最小量。SQL从零开始,然后根据需要逐渐增加。
布伦特·奥扎

11

如果它加快查询速度,则可能涉及参数嗅探。如果将废话计划缓存并应用于不适当的后续调用,那么重新启动的奇迹将使通用/正确的计划得以缓存。如果是这种情况,那么还有其他许多其他更好的纠正行为的方法。但是,直到他们停止重新启动包装盒之后,才可以执行根本原因分析。


这应该是公认的答案。正确的SQL设计和方案设计,是为了避免重新启动服务器的需求是至关重要的,但服务器重新启动可能有必要无论如何,由于服务器策略-比如安全补丁,等等
Fandango68

11

除非更改了服务属性或设置了要立即生效的启动跟踪,否则不应重新启动SQL Server。

正如@RemusRusanu指出的要点一样,它清除了许多缓存并导致SQL Server做了大量不必要的启动工作

听起来这台服务器不是专用的SQL Server /数据库服务器。最佳实践是使生产数据库服务器仅具有一个用途...成为数据库服务器。在这种情况下,您将为操作系统预留足够的内存和资源,并将其他所有资源分配给SQL Server。这将导致您不会饿死任何其他应用程序或服务器角色。


2

我同意这样的观点,即如果您做的一切正确,则可能不需要重新启动/重新启动MSSQL Server。
对我来说,这适用于每个人都有能力并且您可以解决任何问题的方案。

我不是DBA。我是一个软件架构师和涉及从头开始构建整个数据库模式和的一部分,不幸的是,与第三方数据库的工作,我绝对NO控制权。
创建和维护我们主要的第三方数据库之一的人们几乎没有使其发挥作用。

我是否提到我也不是安全专家或网络工程师?

  • 每个月或每两个月至少要发布一次主要Window OS更新,安全更新,BIOS更新,OS / MSSQL Service Pack或MSSQL累积更新。
  • 及时应用这些意味着大约每个季度重新启动/重新启动服务器。
  • 即使在Intranet中运行时,为什么不应用安全更新?
  • 如果允许我在PHI Intranet网站上使用SSL,我会这样做,因为没有网络是绝对可靠的。我猜我很偏执。


对我来说,问题变成了:我是否应该每3个月重新启动SQL Server一次?

计划重新启动以实现更高的性能,就像在雨中跳舞一样。
也许会来,也许不会,但是您不会确定是什么导致下雨。

  • 如果由于常规维护而在重新引导服务器后发现明显的性能下降,则应调查原因。
  • 如果您遇到问题,并且不确定是什么原因导致的,那么当您通过停止服务和作业来减少诸如内存泄漏(在这种极端情况下)之类的操作来减少变量时,可能会在某些服务启用的情况下重启/重启服务器关闭(或打开跟踪)将帮助您排除其他服务原因。

我不想说您不需要重新启动它来解决问题或验证故障转移,但在安排重新启动以防止未知性能问题随机发生方面确实存在问题。

只有例外的情况是,如果你管理一个流氓第三方数据库每周都在那里重新启动它或两个似乎只有这样才能保持它的工作,你不准修复,甚至触摸它。
即使这样,您也应该寻找修补程序,与所有者共享,然后解决该问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.