重启SQL Server——老是好事?

在实际工做中,我常常看到——有时人们按期重启SQL Server!咱们都但愿接受,SQL Server的按期重启并不真的是一个好主意。但在今天的文章里,我想进一步讨论下,当你按期重启你的SQL Server时,有哪些反作用。sql

缓冲池(Buffer Pool)

一旦你重启你的SQL Server,你会丢失缓冲池的全部内容,这是SQL Server保存来自存储子系统的数据库页。做为反作用,在重启后,你的查询会简单的更慢,由于SQL Server须要进行不少的物理I/O读,从存储子系统请求回数据到缓冲池。数据库

计划缓存(Plan Cache)

SQL Server重启的另外一个很是重要的反作用时,你丢失全部来自计划缓存,编译好的执行计划。对于每一个提交到数据库的每一个查询,SQL Server如今必须再次编译物理执行计划——并且这会花点时间。当你有一些不稳定的执行计划,这会更糟,SQL Server会生成和先前不同的执行计划。在这个状况下,你的整个性能会惨遭伤害,由于没有足够的执行计划被缓存,而后被盲目重用——反复如此……缓存

动态管理视图和函数(DMVs/DMFs)

在上一篇文章里,SQL Server存储各个动态管理视图和函数的整个数据的地方:它直接存储在sqlservr.exe进程空间里。那么当你重启SQL Server时,sqlservr.exe进程被销毁并重启。所以,经过各个动态管理视图和函数访问的数据都不可用。从性能故障排除角度来讲,这很是很差,由于重启后,对于SQL Server的先前的生命周期里,你已经啥也不知道了。ide

故障恢复(Crash Recovery)

当你重启你的SQL Server,每一个数据库会经历故障恢复过程,在这里SQL Server最终进行全部未提交事务的回滚,将数据库恢复到一致的状态。所以——做为反作用——当你发起SQL Server重启时,你会丢失还没有提交的全部事务。你也要记住:在故障恢复过程当中,全部未提交的事务会直接回滚。函数

小结

我但愿今天的文章会给你一些想法:为何按期重启SQL Server不是个好主意。当人们在一些特定状况里重启SQL Server,但这不是人们按期重启的意义,由于那是由于你有问题才重启,对此,我没问题。若是你有问题,你应该去调查它们,找出潜在的根源是什么。性能

感谢关注!idea

原文连接:

https://www.sqlpassion.at/archive/2016/08/08/restarting-sql-server-always-a-good-ideaspa

相关文章
相关标签/搜索