在实际工作中,我经常看到——有时人们定期重启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. java 引入自定义字体font后出现的硬盘吃光的问题

    有个需求要用美术字体在图片上写字 用自定义的文字有两个方法: 1. Font dynamicFont = Font.createFont(Font.TRUETYPE_FONT, InputStream ...

  2. LogStash-2.4.0自定义区域信息插件-ISP

    由于直接复制粘贴有问题,所以给出链接: http://note.youdao.com/share/?id=6dfb1f03240e156c1db4a56c85e3b6db&type=note# ...

  3. IIS 8:IIS 入门

    深埋在您的 Microsoft 服务器 (2008年. 2008 R2 和 2012年的版本) 的范围内是最强大的 Web 服务器可用. 它只等待你来发挥其全部潜力. 您的目标是要从家里运行一个 Wo ...

  4. 《HiWind企业快速开发框架实战》(0)目录及框架简介

    <HiWind企业快速开发框架实战>(0)目录及框架简介 本系列主要介绍一款企业管理系统快速开发框架,该框架旨在快速完成企业管理系统,并实现易维护可移植的目标. 使用逐个系统模块进行编码的 ...

  5. DDD领域驱动设计之领域服务

    1.DDD领域驱动设计实践篇之如何提取模型 2.DDD领域驱动设计之聚合.实体.值对象 3.DDD领域驱动设计之领域基础设施层 什么是领域服务,DDD书中是说,有些类或者方法,放实体A也不好,放实体B ...

  6. ASP.NET MVC 5 - 给电影表和模型添加新字段

    在本节中,您将使用Entity Framework Code First来实现模型类上的操作.从而使得这些操作和变更,可以应用到数据库中. 默认情况下,就像您在之前的教程中所作的那样,使用 Entit ...

  7. 如何在 ASP.NET MVC 中集成 AngularJS(3)

    今天来为大家介绍如何在 ASP.NET MVC 中集成 AngularJS 的最后一部分内容. 调试路由表 - HTML 缓存清除 就在我以为示例应用程序完成之后,我意识到,我必须提供两个版本的路由表 ...

  8. mysql 的 VARCHAR VARCHAR2

    mysql 里面竟然没有 VARCHAR2 ??

  9. <canvas>drawImage()方法无法显示图片

    在书上看到用<canvas>绘制图像就动手试试,刚开始,我的代码是这样的: <!DOCTYPE html> <html> <head> <meta ...

  10. Nginx与Apache比较

    Nginx特点:高性能epoll 异步非阻塞多个连接(万级别)可以对应一个进程 支持反向代理支持7层负载均衡静态文件.反向代理.前端缓存等处理方便支持高并发连接,每秒最多的并发连接请求理论可以达到 5 ...