zoukankan      html  css  js  c++  java
  • 02-SQLServer数据库页校验(IO校验)的几种方式

    一、总结

    1、SQLServer数据库的页校验(IO校验)方式有三种:CHECKSUM(默认)、TORN_PAGE_DETECTION、NONE。

    2、SQLServer数据库的页校验机制对数据文件(mdf)和日志文件(ldf)都生效。

    3、数据库查看方式

    4、三种校验方式的原理和区别

    CHECKSUM(默认):

      在向磁盘中写入页面时,对整个页面做checksum,也就是计算整个页面的校验和值,返回值是int类型,并将该值保存在页眉中。在读取页面时重新计算校验和值与页眉中保存的值进行比较,如果2个值不匹配,将同时在SQLServer错误日志和windows事件日志中报告错误消息824(校验和失败,即存在I/O问题)。

     TORN_PAGE_DETECTION:

      在向磁盘中写入页面时,将每个512字节扇区的特定2位模式保存在页头中,也就是页头中的残缺位。当从磁盘中读取页面时,页头中存储的残缺位与实际扇区信息进行比较,如果值不匹配,表明只有页面的一部分写入磁盘。这时SQLServer错误日志和Windows事件日志也会报错误消息824(这种叫页撕裂错误)。

    NONE:

      该种模式下,数据页写入不会生成CHECKSUM或TORN_PAGE_DETECTION值。在读取过程中,即便页面中保存有这2个值,SQLServer也不会校验。

    5、SQLServer将对因校验和值、页撕裂或其他IO错误而失败的任何读取都重试四次。如果其中的一次重试成功,则会向错误日志写入一条消息,读取的命令继续执行;如果重试失败,则读取的命令失败,错误日志里写入824错误消息。

    6、TORN_PAGE_DETECTION使用的资源少,保护级别低,CHECKSUM使用的资源多,但是提供更多的保护。

    7、设置数据库的页校验模式时,无需使数据库脱机、锁定数据库或阻止其他方式访问数据库,即可修改PAGE_VERIFY的值。

    8、修改页校验的脚本

    (1).设置页校验(IO校验)为CHECKSUM
    alter database payment set page_verify checksum

    (2).设置页校验(IO校验)为TORN_PAGE_DETECTION
    alter database payment set page_verify torn_page_detection

    (3).设置页校验(IO校验)为NONE
    alter database payment set page_verify none

  • 相关阅读:
    Codeforces 1316B String Modification
    Codeforces 1305C Kuroni and Impossible Calculation
    Codeforces 1305B Kuroni and Simple Strings
    Codeforces 1321D Navigation System
    Codeforces 1321C Remove Adjacent
    Codeforces 1321B Journey Planning
    Operating systems Chapter 6
    Operating systems Chapter 5
    Abandoned country HDU
    Computer HDU
  • 原文地址:https://www.cnblogs.com/jialanyu/p/12987511.html
Copyright © 2011-2022 走看看