• SQL Server中的Recovery Interval


    其实有很多朋友都问到过Recovery Interval,有问这个是干吗的,有问怎么调节这个值,所以今天写一篇小Blog,一劳永逸。

    众所周知,SQL Server依靠Log来保证性能和数据持久性两不耽搁。那么我们来看一看SQL Server是如何处理我们的数据修改请求的。

    首先我们的客户端将数据修改指令递交到SQL Server,SQL Server就会通过一系列的过程把数据从物理磁盘上读取到内存中。

    数据被读取到内存中后,SQL Server会在内存中修改数据。当然大家就会想到,修改完了是不是要立即写回到磁盘上呢?如果写回去,那么势必会影响性能,如果不写,那么万一系统崩溃了修改就会丢失,这一切就像我们在用WORD写文档一样。

    SQL Server没有采用这两种笨办法,SQL Server知道大多数情况下,大多数数据被访问后一段时间内都会再次被访问,因此SQL Server决定将数据保留在内存中。不过,如果这个时候系统崩溃了怎么办,又或者系统掉电了怎么办呢?SQL Server采用了一种变通的办法,它将修改操作写到了另外一个文件中去,这个文件叫做日志。

    那么SQL Server就像这样,我们每修改一个数据,SQL Server都会把这个数据写到日志文件中去。如果系统崩溃了,SQL Server只要从这个日志文件中就可以知道我们执行了哪些操作,我们只要把这些操作再做一遍就可以恢复数据了。

    好像我们没有讲到Recovery Interval么。

    是的,就要来了。虽然上面说的办法不错,不过那些修改过的数据不能一直放在内存中。除了内存是有限的之外,还有一个重要的原因,那就是SQL Server不能仅仅依赖日志来保证数据的一致性。

    SQL Server通常都会运行数个月之久而不重新启动,这可不像我们用的笔记本。那么如果它运行了三个月后突然崩溃了,天哪!难道我们要把三个月的操作重新做一遍?!当然不能这样,Recovery Interval会控制这一切!

    Recovery Interval会告诉SQL Server,如果要通过日志里面的操作进行恢复不能超过多少时间。那么SQL Server就会看好这一切,当它发现日志里面的新的操作需要超过Recovery Interval的时间进行恢复的时候,SQL Server就像强制将内存那些被修改过的数据写回到磁盘里面去。

    这样我们就不用重新执行那三个月的操作了,通常都是短短的5分钟,因为默认Recovery Interval是5分钟。

    那么我们怎么调节这个值呢?

    Recovery Interval的值越长,那么也就意味着万一我们的系统崩溃了,我们就需要更长的时间进行恢复,不过也就以为那些被修改过的数据可以在内存中停留更长的时间,也就意味着我们可以写磁盘写的更少一些。

    相反,如果Recovery Interval的值约短,那么也就意味着万一我们的系统崩溃了,我们就需要恢复的时间就更短,另外一方面也就意味着我们可以写磁盘写的更频繁一些。


     下面的示例将系统恢复间歇设为 3 分钟。

    USE master0
    EXEC sp_configure 'recovery interval', '3'
    RECONFIGURE WITH OVERRIDE

  • 相关阅读:
    把一件简单的事情做好你就不简单了
    一个经验尚浅的码农五年软件开发的一点自我总结,对工作五年的反思~
    我就是一名房地产经纪人!不是中介,谁能明白我们呢?
    我与父辈的酒局
    郎意难坚,侬情自热(文/王路)
    红灯须硬闯,马路要横穿(文/王路)
    孩子,你慢慢来
    职场六年后的一点点感言
    有幸见到一朵花的绽放
    当你遇到她
  • 原文地址:https://www.cnblogs.com/qanholas/p/2389201.html
Copyright © 2020-2023  润新知