你的位置:首页 > 数据库

[数据库]SQL Server通过BOOT PAGE来进行Crash Recovery


SQL Server通过BOOT PAGE来进行Crash Recovery

看了盖总的一篇文章

http://www.eygle.com/archives/2008/11/oracle_internals_preface.html

数据文件的第一个Block记录了重要的检查点、SCN等信息,这些信息在启动时要被读取,这里就是这样一种体现。

 

我们看一下SQL Server的情况,使用DBCC fileheader命令,10为我的一个用户库SSS的数据库ID

环境:SQL Server2012 64位

SELECT DB_ID('sss')DBCC fileheader(10)

(图一)

(图二)

(图三)

 

(图四)

 

从上面的图大家应该发现一些规律

RecoveryForkLSN:Cash Recovery的时候需要调用的lsn,也是RedoStartLSN:27000000027100001
ReadOnlyLsn:只读模式数据库
ReadWriteLsn:读写模式数据库


 

因为BOOTPAGE是每个数据库启动的第一个页面,启动的过程里面其实最重要也是最耗时就是数据库redo和undo过程

所以把Redo Start LSN放在BOOTPAGE也就不无道理了,数据库一启动马上就读取LSN信息,然后到LDF文件里读取日志

 

如有不对的地方,欢迎大家拍砖o(∩_∩)o