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

缓冲池(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的先前的生命周期里,你已经啥也不知道了。

故障恢复(Crash Recovery)

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

小结

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

感谢关注!

原文链接:

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

重启SQL Server——总是好事?的更多相关文章

  1. 重启sql server服务两种方式

    1.第一种重启SQl server的方法 点击左侧的数据库重启 如图 右击有个重启操作 2.第二个重启sql server方法

  2. sql server停止和重启命令

    http://www.ynpxrz.com/n822732c2024.aspx 我们知道:sql server重启分分两步走 1.停止 net stop mssqlserver 2.重启 net st ...

  3. 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

    从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...

  4. SQL Server 常用内置函数(built-in)持续整理

    本文用于收集在运维中经常使用的系统内置函数,持续整理中 一,常用Metadata函数 1,查看数据库的ID和Name db_id(‘DB Name’),db_name('DB ID') 2,查看对象的 ...

  5. (转) 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

    原文地址: http://www.cnblogs.com/lyhabc/p/4682986.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第三篇,这一篇才真正开始搭建Alwa ...

  6. SQL Server 多实例下的复制

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 搭建步骤(Procedure) 注意事项(Attention) 二.背景(Contexts) ...

  7. SQL Server 即时文件初始化

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 基础知识(Rudimentary Knowledge) 实现过程(Process) 疑问(Qu ...

  8. SQL Server启动的几种方法

    SQL Server 启动有以下几种方法: (1)在Control Panel——Administrative Tools——Services,找到SQL Server (XXX)进行启动. 其中XX ...

  9. 慎重管理SQL Server服务的登录(启动)账户和密码

    今天是大年初三,先跟大家拜个年,祝大家新年快乐.今天处理了一个alwaysOn问题——辅助副本因为磁盘空间不足一直显示[未同步——可疑],在日志中可以看到数据库处于挂起状态,与主副本失去同步.原以为只 ...

随机推荐

  1. Android Studio编码问题

    Android Studio编码问题 不同于Eclipse,选中项目右击即会出现"Properties"选项,可以设置项目文件的默认编码,可以根据自己的需要设置为UTF-8/GB2 ...

  2. MVC Castle依赖注入实现代码

    1.MVc 实现依赖注入 public class WindsorControllerFactory : DefaultControllerFactory { private readonly IKe ...

  3. 使用 OWIN Self-Host ASP.NET Web API 2

    Open Web Interface for .NET (OWIN)在Web服务器和Web应用程序之间建立一个抽象层.OWIN将网页应用程序从网页服务器分离出来,然后将应用程序托管于OWIN的程序而离 ...

  4. .Net中的反应式编程(Reactive Programming)

    系列主题:基于消息的软件架构模型演变 一.反应式编程(Reactive Programming) 1.什么是反应式编程:反应式编程(Reactive programming)简称Rx,他是一个使用LI ...

  5. 剑指Offer面试题:13.调整数组顺序使奇数位于偶数前面

    一.题目:调整数组顺序使奇数位于偶数前面 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 例如有以下一个整数数组:12345 ...

  6. ASP.Net开发基础温故知新学习笔记

    申明:本文是学习2014版ASP.Net视频教程的学习笔记,仅供本人复习之用,也没有发布到博客园首页. 一.一般处理程序基础 (1)表单提交注意点: ①GET通过URL,POST通过报文体: ②需在H ...

  7. SQLSERVER语句 in和exists哪个效率高本人测试证明

    SQLSERVR语句 in和exists哪个效率高本人测试证明 最近很多人讨论in和exists哪个效率高,今天就自己测试一下 我使用的是客户的数据库GPOSDB(已经有数据) 环境:SQLSERVE ...

  8. ASP.NET MVC 控制器激活(一)

    ASP.NET MVC 控制器激活(一) 前言 在路由的篇章中讲解了路由的作用,讲着讲着就到了控制器部分了,从本篇开始来讲解MVC中的控制器,控制器是怎么来的?MVC框架对它做了什么?以及前面有的篇幅 ...

  9. java中集合类中Collection接口中的Map接口的常用方法熟悉

    1:Map接口提供了将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.Map接口中同样提供了集合的常用方法. 2:由于Map集合中的元素是通过key,value,进行存储的,要 ...

  10. Linux核心源码阅读方法

    首次阅读Linux4.0.5内核源代码时,一脸茫然,它的代码不仅复杂,而且庞大,找不到从哪里开始阅读. 通常Linux会有以下目录 arch 子目录包括所有和体系结构相关的核心代码.它还有更深的子目录 ...