php blocklog_SQLSERVER中的logblock校验(译)
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校验(译)相关推荐
- struts中简单的校验
Struts中简单的校验 "计应134(实验班) 凌豪" Struts2校验简要说明:struts2中通常情况下,类型转换要在数据校验之前进行.类型转换其实也是基本的服务器端校验, ...
- 借助axios的拦截器实现Vue.js中登陆状态校验的思路
在做Vue中的登陆校验时,思路应该是这样的:先确定一个路由页面是否需要登陆才能访问,如果需要,就需要用户登陆,如果不需要,用户直接可以访问. 那么,首先来说,后台系统中,不一定每一个页面都要进行登陆权 ...
- [WPF 基础知识系列] —— 绑定中的数据校验Vaildation
[WPF 基础知识系列] -- 绑定中的数据校验Vaildation 原文:[WPF 基础知识系列] -- 绑定中的数据校验Vaildation 前言: 只要是有表单存在,那么就有可能有对数据的校验需 ...
- vue验证整数_前端Vue中常用rules校验规则
前端Vue中常用rules校验规则 1.是否合法IP地址 export function validateIP(rule, value,callback) {if(value==''||value== ...
- 关于Ext中EditorGridPanel数据校验
用了2年的Ext 渐渐对Ext熟络起来,经常去看下源码,自己瞎琢磨些功能,最近做了个EditorGridPanel数据校验,原理不难,不过绝对原创,有点意思,发下和大家分享~ 原理:通过EditorG ...
- Android P中的AVB校验(一)
其实对于这篇文章来说,Android P已经是时间过了,前辈的文章也是18年的.不过技术还是相通的,不过也是变通的. 原文链接:https://blog.csdn.net/rikeyone/artic ...
- Android P中的AVB校验(二)
上一篇是大概知道了Android P中的AVB校验流程,其中我们说了目的就是为了挂载,那么怎么挂载呢?这一篇一起来学习一下前辈的文章:https://blog.csdn.net/rikeyone/ar ...
- Java中使用注解校验参数
一.参数校验的注解 Java中参数校验的注解来自三方面,分别是 javax.validation:validation-api,对应包javax.validation.constraints org. ...
- java中正则匹配字符串长度_Java中使用正则表达式校验字符串
Java中使用正则表达式校验字符串 正则表达式是某一位伟大的数学家发明的,现在已经形成了一个ISO标准,这个标准和编程语言没有关系.至于具体谁发明的,怎么发明的,我也忘记了:). 正则表达式简单理解就 ...
最新文章
- 基于Matlab的神经网络结合遗传算法在非线性函数极值寻优中的应用
- “领悟”的价值是什么?思维能力训练问答
- 《系统集成项目管理工程师》必背100个知识点-71合同变更控制系统
- eclipse 保存html 提示 save could not be completed
- 使用WxPython进行Win32下Python编程
- 几种常见的分布及其性质
- 中秋祝福网页制作_幼儿园中秋节活动方案(附环创)
- python右对齐函数_Python这68个内置函数,建议你吃透!
- WinForm(二) WinForm进阶与复杂控件使用
- matlab2018a 安装指南
- Matplotlib 中文用户指南 8.2 我们最喜欢的秘籍
- 倍福--和威伦触摸屏通信
- 联想Lenovo——何去何从
- Visio2013 pro专业版本激活工具---- KMSpico_setup_visio
- 基于gibbsLDA的文本分类
- GoogleEarth二次开发平台指南(1) ---如何将谷歌地球嵌入到自定义的窗体中
- FTP修改默认端口后,注意事项
- python两张图片无缝合成一张_Python将多张图片进行合并拼接
- 设置SecureCRT来正确显示彩色
- Linux PCI网卡驱动的详细分析
热门文章
- 一文搞懂 Prometheus 的直方图
- Spring Cloud配置中心获取不到最新配置信息的问题
- php 刷新iframe,js刷新iframe
- 计算机考试字字处理重点,计算机等级考试一级B上机试题:字表处理题(1)
- android viewgroup 事件,android中viewgroup的事件传递分析
- refineFace 笔记
- [WinError 10038] 在一个非套接字上尝试了一个操作
- NMS和soft-nms算法
- Windows下编译TensorFlow1.3 C++ library及创建一个简单的TensorFlow C++程序
- opencv中的approxPolyDP函数和boundingRect函数