SQLSERVER中的log block校验(译)
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可以使用
<span>1</span> <span>ALTER</span> <span>DATABASE</span> 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

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

导入步骤如下:将 MDF 文件复制到 SQL Server 的数据目录(通常为 C:\Program Files\Microsoft SQL Server\MSSQL\DATA)。在 SQL Server Management Studio(SSMS)中,打开数据库并选择“附加”。单击“添加”按钮,选择 MDF 文件。确认数据库名称,点击确定按钮即可。

对于 SQL Server 数据库中已存在同名对象,需要采取以下步骤:确认对象类型(表、视图、存储过程)。如果对象为空,可使用 IF NOT EXISTS 跳过创建。如果对象有数据,使用不同名称或修改结构。使用 DROP 删除现有对象(谨慎操作,建议备份)。检查架构更改,确保没有引用删除或重命名的对象。

要查看 SQL Server 端口号:打开 SSMS,连接到服务器。在对象资源管理器中找到服务器名称,右键单击它,然后选择“属性”。在“连接”选项卡中,查看“TCP 端口”字段。

当 SQL Server 服务无法启动时,可采取以下步骤解决:检查错误日志以确定根本原因。确保服务帐户具有启动服务的权限。检查依赖项服务是否正在运行。禁用防病毒软件。修复 SQL Server 安装。如果修复不起作用,重新安装 SQL Server。

若误删 SQL Server 数据库,可采取以下步骤恢复:停止数据库活动;备份日志文件;检查数据库日志;恢复选项:从备份恢复;从事务日志恢复;使用 DBCC CHECKDB;使用第三方工具。请定期备份数据库并启用事务日志以防止数据丢失。

SQL Server 数据库文件通常存储在以下默认位置:Windows: C:\Program Files\Microsoft SQL Server\MSSQL\DATALinux: /var/opt/mssql/data可通过修改数据库文件路径设置来自定义数据库文件位置。

问题发现这次使用的是SqlServer数据库,之前并没有使用过,但是问题不大,我按照需求文档的步骤连接好SqlServer之后,启动SpringBoot项目,发现了一个报错,如下:刚开始我以为是SqlServer连接问题呢,于是便去查看数据库,发现数据库一切正常,我首先第一时间问了我的同事,他们是否有这样的问题,发现他们并没有,于是我便开始了我最拿手的环节,面向百度编程。开始解决具体报错信息是这样,于是我便开始了百度报错:ERRORc.a.d.p.DruidDataSource$CreateCo

Moondrop 为音频爱好者发布了 Block 真无线耳机,可舒适地佩戴在外耳中。与塞入耳道的耳塞不同,Block 不会造成耳朵堵塞的感觉或积聚耳垢。随附 13 毫米驱动器
