SQL Server中的Recovery Interval
来源:互联网 发布:淘宝美工网上兼职招聘 编辑:程序博客网 时间:2024/06/06 13:25
其实有很多朋友都问到过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
recovery interval 是一个高级选项。如果要使用 sp_configure 系统存储过程改变该设置,必须把 show advanced options 设置为 1,该选项立即生效(无需服务器停止并重新启动)
- SQL Server中的Recovery Interval
- SQL SERVER的recovery interval
- SQL Server小知识:Recovery Interval
- Pro SQL Server Disaster Recovery
- SQL Server: Is Replication Recovery Model dependent ?
- Apress.Pro.SQL.Server.Disaster.Recovery.Mar.2008.eBook-BBL
- [SQL Server]大容量日志恢复模式bulk_logged recovery model
- [SQL Server]大容量日志恢复模式bulk_logged recovery model
- SQL Server DBA面试知识点(二)-- Recovery Mode
- 华信SQL SERVER数据库修复程序V1.2(HX-Recovery for SQL Server)
- SQL server中的随机数
- SQL Server 中的标识符
- SQL server中的随机数
- Sql server中的Cursor
- SQL server中的数据类型
- SQL Server中的锁
- SQL Server 中的rowid
- SQL Server应用程序中的
- centos truncate not found
- 在centos6.3安装 Navicat
- poj 2769
- XCode开发遇到的“Could not inspect the application package”解决方案
- 高新3号线路开通通告
- SQL Server中的Recovery Interval
- 中国大数据技术创新与创业大赛”获奖队伍交流分享
- cocos2dx:如何将按钮的三张图片节省为一张
- js中的break ,continue, return
- 【九度】题目1522:包含min函数的栈
- 生成函数
- 在csdn写技术博客吧,哈哈哈
- k-d tree算法的研究
- 禁用TwebBrowser右键