在实际工作中,我经常看到——有时人们定期重启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. 在iOS中使用ZXing库[转]

    前言 ZXing(Github镜像地址)是一个开源的条码生成和扫描库(开源协议为Apache2.0).它不但支持众多的条码格式,而且有各种语言的实现版本,它支持的语言包括:Java, C++, C#, ...

  2. 微软借力.NET开源跨平台支持,布局物联网平台开发

    今天科技类最大的新闻,莫过于微软宣布.NET开发框架开源计划..NET 开源,集成 Clang 和 LLVM 并且自带 Android 模拟器,这意味着 Visual Studio 这个当下最好没有之 ...

  3. MyBatis(增删改查)

    1.工程中引入包: mybatis-3.2.7.mysql-connector-java-5.1.22-bin 2.添加配置文件: <?xml version="1.0" e ...

  4. 使用Guava EventBus构建publish/subscribe系统

    Google的Guava类库提供了EventBus,用于提供一套组件内publish/subscribe的解决方案.事件总线EventBus,用于管理事件的注册和分发.在系统中,Subscribers ...

  5. 使用 SailingEase WinForm 框架构建复合式应用程序(插件式应用程序)

    对于一些较小的项目,具备一定经验的开发人员应该能够设计和构建出便于进行维护和扩展的应用程序.但是,随着功能模块数量(以及开发维护这些部件的人员)的不断增加,对项目实施控制的难度开始呈指数级增长. Sa ...

  6. 关于printf错用格式化字符串导致double和long double输出错误的小随笔

    [题外话] 以前用HUSTOJ给学校搭建Online Judge,所有的评测都是在Linux下进行的.后来为了好往学校服务器上部署,所以大家重新做了一套Online Judge,Web和Judge都是 ...

  7. JavaScript常见原生DOM操作API总结

    [TOC] 最近面试的时候被这个问题给卡了,所以抽时间好好复习一下. 几种对象 Node Node是一个接口,中文叫节点,很多类型的DOM元素都是继承于它,都共享着相同的基本属性和方法.常见的Node ...

  8. wpf Webbrowser 乱码问题及弹窗被遮挡

    wpf的webbrowser在使用NavigateToString(string text);方法时如果字符串含有中文字符,并在html的头文件中没有声明Document的编码方式为UTF-8的话,由 ...

  9. LINQ系列:LINQ to ADO.NET概述

    LINQ to ADO.NET 包括两种独立的技术: LINQ to DataSet 和 LINQ to SQL. 使用 LINQ to DataSet 可以对DataSet 执行丰富而优化的查询,而 ...

  10. Android之SqlLite数据库使用

    每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的.与操作系统无关的SQL数据库—SQLite.SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据 ...