SQL Server小知识:Recovery Interval
2008-08-09 09:55:07 来源:WEB开发网其实有很多朋友都问到过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的值约短,那么也就意味着万一我们的系统崩溃了,我们就需要恢复的时间就更短,另外一方面也就意味着我们可以写磁盘写的更频繁一些。
- ››SQL Server 2008 R2 下如何清理数据库日志文件
- ››sqlite 存取中文的解决方法
- ››SQL2005、2008、2000 清空删除日志
- ››SQL Server 2005和SQL Server 2000数据的相互导入...
- ››sql server 2008 在安装了活动目录以后无法启动服...
- ››sqlserver 每30分自动生成一次
- ››sqlite 数据库 对 BOOL型 数据的插入处理正确用法...
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
更多精彩
赞助商链接