SQL SERVER中的log block校验2014-05-10 cnblogs 桦仔

从SQL2005开始,checksum校验被增加为页面校验的一个选项,最广为人知的两个checksum选项就是备份时候的 checksum选项和页面校验checksum选项


另外一个比较少人知道的选项就是log block checksum什么是log block?Log Block在宋沄剑写的文章里已经介绍的很清楚了Log Block是日志写入持久化存储的最小单位,Log Block的大小从512字节到60K不等,这取决于事务的大小,那些在内存还未被写入持久化存储的Log Block也就是所谓的In-Flight日志。以下两个因素决定Log Block的大小:事务提交或回滚 Log Block满60K会强制Flush到持久化存储,以保证WAL 因此当一个事务很大时(比 如说大面积update),每60K就会成为一个Log Block写入持久化存储。而对于很多小事务,提交或回滚就会成为一个Block写入持久化存储 ,因此根据事务的大小,LOG Block的大小也会不同。大家知道page checksum就是校验写入磁盘的页面,而log block checksum其实就是校验写入磁盘的log block因为当log block写入磁盘的时候也有可能损坏的,所以也需要校验,本人觉得log block checksum校验的重要性不 亚于页面校验因为SQLSERVER靠日志来保证事务一致性,如果日志损坏了,还如何靠这些日志进行redo,undo log??