SQLSERVER中的log block校验(译) 来自: http://sankarreddy.com/2010/03/transaction-log-block-checksum/ 阅读下文之前可以先看这篇文章:再谈SQL Server中日志的的作用 从SQL2005开始,checksum校验被增加为页面校验的一个选项,最广为人知的两个checks

SQLSERVER中的log block校验(译)

来自:http://sankarreddy.com/2010/03/transaction-log-block-checksum/

阅读下文之前可以先看这篇文章:再谈SQL Server中日志的的作用

从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??

我如何打开log block checksum这个选项?

页面checksum可以使用

1 ALTER DATABASE xx PAGE_VERIFY CHECKSUM

Log block CHECKSUM选项会在当页面校验选项被设置为checksum的时候自动开启,即当执行上面那条语句的时候SQLSERVER已经

帮您自动开启了log block checksum。注意:当开启过页面校验选项被设置为checksum之后

后来又转回页面校验选项“TORN_PAGE_DETECTION”时候并不会影响log block checksum

log block CHECKSUM的工作方式

当SQLSERVER提交一个事务并且发出一个事务日志写,在log block写入磁盘之前,SQLSERVER就是计算出这个log block的checksum值

并附加在log block的头部,实际上这个结构跟数据页面非常相似。当在备份和还原(还有其他的活动)期间读取事务日志的时候,checksum值

就会被重新计算并且检查先前写入到log block头部的那个checksum值

大家可以参考一下页面checksum:

SQL 2005中的checksum功能

http://blogs.msdn.com/b/apgcdsd/archive/2012/04/09/sql-2005-checksum.aspx

log block CHECKSUM有什么帮助?

如果存储在log block头部中的checksum值跟在读取log block时用相同的方法再计算一次的checksum值不匹配

那么说明IO子系统已经对您的数据造成一定的破坏。这个时候你应该马上检查IO子系统找出问题的根源

TSQL里面的checksum函数、页面checksum、备份checksum、log block checksum是使用相同的算法吗?

答案是:NO

TSQL里的 CHECKSUM 函数算法是不同于PAGE/BACKUP/Log Block CHECKSUM的,

PAGE/BACKUP/Log Block CHECKSUM使用简单和更有效的算法相比于TSQL的checksum函数

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

php blocklog_SQLSERVER中的logblock校验(译)相关推荐

  1. struts中简单的校验

    Struts中简单的校验 "计应134(实验班) 凌豪" Struts2校验简要说明:struts2中通常情况下,类型转换要在数据校验之前进行.类型转换其实也是基本的服务器端校验, ...

  2. 借助axios的拦截器实现Vue.js中登陆状态校验的思路

    在做Vue中的登陆校验时,思路应该是这样的:先确定一个路由页面是否需要登陆才能访问,如果需要,就需要用户登陆,如果不需要,用户直接可以访问. 那么,首先来说,后台系统中,不一定每一个页面都要进行登陆权 ...

  3. [WPF 基础知识系列] —— 绑定中的数据校验Vaildation

    [WPF 基础知识系列] -- 绑定中的数据校验Vaildation 原文:[WPF 基础知识系列] -- 绑定中的数据校验Vaildation 前言: 只要是有表单存在,那么就有可能有对数据的校验需 ...

  4. vue验证整数_前端Vue中常用rules校验规则

    前端Vue中常用rules校验规则 1.是否合法IP地址 export function validateIP(rule, value,callback) {if(value==''||value== ...

  5. 关于Ext中EditorGridPanel数据校验

    用了2年的Ext 渐渐对Ext熟络起来,经常去看下源码,自己瞎琢磨些功能,最近做了个EditorGridPanel数据校验,原理不难,不过绝对原创,有点意思,发下和大家分享~ 原理:通过EditorG ...

  6. Android P中的AVB校验(一)

    其实对于这篇文章来说,Android P已经是时间过了,前辈的文章也是18年的.不过技术还是相通的,不过也是变通的. 原文链接:https://blog.csdn.net/rikeyone/artic ...

  7. Android P中的AVB校验(二)

    上一篇是大概知道了Android P中的AVB校验流程,其中我们说了目的就是为了挂载,那么怎么挂载呢?这一篇一起来学习一下前辈的文章:https://blog.csdn.net/rikeyone/ar ...

  8. Java中使用注解校验参数

    一.参数校验的注解 Java中参数校验的注解来自三方面,分别是 javax.validation:validation-api,对应包javax.validation.constraints org. ...

  9. java中正则匹配字符串长度_Java中使用正则表达式校验字符串

    Java中使用正则表达式校验字符串 正则表达式是某一位伟大的数学家发明的,现在已经形成了一个ISO标准,这个标准和编程语言没有关系.至于具体谁发明的,怎么发明的,我也忘记了:). 正则表达式简单理解就 ...

最新文章

  1. 基于Matlab的神经网络结合遗传算法在非线性函数极值寻优中的应用
  2. “领悟”的价值是什么?思维能力训练问答
  3. 《系统集成项目管理工程师》必背100个知识点-71合同变更控制系统
  4. eclipse 保存html 提示 save could not be completed
  5. 使用WxPython进行Win32下Python编程
  6. 几种常见的分布及其性质
  7. 中秋祝福网页制作_幼儿园中秋节活动方案(附环创)
  8. python右对齐函数_Python这68个内置函数,建议你吃透!
  9. WinForm(二) WinForm进阶与复杂控件使用
  10. matlab2018a 安装指南
  11. Matplotlib 中文用户指南 8.2 我们最喜欢的秘籍
  12. 倍福--和威伦触摸屏通信
  13. 联想Lenovo——何去何从
  14. Visio2013 pro专业版本激活工具---- KMSpico_setup_visio
  15. 基于gibbsLDA的文本分类
  16. GoogleEarth二次开发平台指南(1) ---如何将谷歌地球嵌入到自定义的窗体中
  17. FTP修改默认端口后,注意事项
  18. python两张图片无缝合成一张_Python将多张图片进行合并拼接
  19. 设置SecureCRT来正确显示彩色
  20. Linux PCI网卡驱动的详细分析

热门文章

  1. 一文搞懂 Prometheus 的直方图
  2. Spring Cloud配置中心获取不到最新配置信息的问题
  3. php 刷新iframe,js刷新iframe
  4. 计算机考试字字处理重点,计算机等级考试一级B上机试题:字表处理题(1)
  5. android viewgroup 事件,android中viewgroup的事件传递分析
  6. refineFace 笔记
  7. [WinError 10038] 在一个非套接字上尝试了一个操作
  8. NMS和soft-nms算法
  9. Windows下编译TensorFlow1.3 C++ library及创建一个简单的TensorFlow C++程序
  10. opencv中的approxPolyDP函数和boundingRect函数