国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

SQLSERVER中的log block校驗(yàn)(譯)

2024-07-21 02:51:05
字體:
供稿:網(wǎng)友
SQLSERVER中的log block校驗(yàn)(譯)SQLSERVER中的log block校驗(yàn)(譯)

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

閱讀下文之前可以先看這篇文章:再談SQL Server中日志的的作用

從SQL2005開始,checksum校驗(yàn)被增加為頁面校驗(yàn)的一個(gè)選項(xiàng),最廣為人知的兩個(gè)checksum選項(xiàng)就是備份時(shí)候的checksum選項(xiàng)和頁面校驗(yàn)checksum選項(xiàng)

另外一個(gè)比較少人知道的選項(xiàng)就是log block checksum


什么是log block?

Log Block在宋沄劍寫的文章里已經(jīng)介紹的很清楚了

Log Block是日志寫入持久化存儲(chǔ)的最小單位,Log Block的大小從512字節(jié)到60K不等,這取決于事務(wù)的大小,

那些在內(nèi)存還未被寫入持久化存儲(chǔ)的Log Block也就是所謂的In-Flight日志。以下兩個(gè)因素決定Log Block的大小:

事務(wù)提交或回滾 Log Block滿60K會(huì)強(qiáng)制Flush到持久化存儲(chǔ),以保證WAL 因此當(dāng)一個(gè)事務(wù)很大時(shí)(比如說大面積update),

每60K就會(huì)成為一個(gè)Log Block寫入持久化存儲(chǔ)。而對(duì)于很多小事務(wù),提交或回滾就會(huì)成為一個(gè)Block寫入持久化存儲(chǔ),因此根據(jù)事務(wù)的大小,

LOG Block的大小也會(huì)不同。

大家知道page checksum就是校驗(yàn)寫入磁盤的頁面,而log block checksum其實(shí)就是校驗(yàn)寫入磁盤的log block

因?yàn)楫?dāng)log block寫入磁盤的時(shí)候也有可能損壞的,所以也需要校驗(yàn),本人覺得log block checksum校驗(yàn)的重要性不亞于頁面校驗(yàn)

因?yàn)镾QLSERVER靠日志來保證事務(wù)一致性,如果日志損壞了,還如何靠這些日志進(jìn)行redo,undo log??


我如何打開log block checksum這個(gè)選項(xiàng)?

頁面checksum可以使用

1 ALTER DATABASE xx PAGE_VERIFY CHECKSUM

Log block CHECKSUM選項(xiàng)會(huì)在當(dāng)頁面校驗(yàn)選項(xiàng)被設(shè)置為checksum的時(shí)候自動(dòng)開啟,即當(dāng)執(zhí)行上面那條語句的時(shí)候SQLSERVER已經(jīng)

幫您自動(dòng)開啟了log block checksum。注意:當(dāng)開啟過頁面校驗(yàn)選項(xiàng)被設(shè)置為checksum之后

后來又轉(zhuǎn)回頁面校驗(yàn)選項(xiàng)“TORN_PAGE_DETECTION”時(shí)候并不會(huì)影響log block checksum


log block CHECKSUM的工作方式

當(dāng)SQLSERVER提交一個(gè)事務(wù)并且發(fā)出一個(gè)事務(wù)日志寫,在log block寫入磁盤之前,SQLSERVER就是計(jì)算出這個(gè)log block的checksum值

并附加在log block的頭部,實(shí)際上這個(gè)結(jié)構(gòu)跟數(shù)據(jù)頁面非常相似。當(dāng)在備份和還原(還有其他的活動(dòng))期間讀取事務(wù)日志的時(shí)候,checksum值

就會(huì)被重新計(jì)算并且檢查先前寫入到log block頭部的那個(gè)checksum值

大家可以參考一下頁面checksum:

SQL 2005中的checksum功能http://blogs.msdn.com/b/apgcdsd/archive/2012/04/09/sql-2005-checksum.aspx


log block CHECKSUM有什么幫助?

如果存儲(chǔ)在log block頭部中的checksum值跟在讀取log block時(shí)用相同的方法再計(jì)算一次的checksum值不匹配

那么說明IO子系統(tǒng)已經(jīng)對(duì)您的數(shù)據(jù)造成一定的破壞。這個(gè)時(shí)候你應(yīng)該馬上檢查IO子系統(tǒng)找出問題的根源


TSQL里面的checksum函數(shù)、頁面checksum、備份checksum、log block checksum是使用相同的算法嗎?

答案是:NO

TSQL里的CHECKSUM 函數(shù)算法是不同于PAGE/BACKUP/Log Block CHECKSUM的,

PAGE/BACKUP/Log Block CHECKSUM使用簡(jiǎn)單和更有效的算法相比于TSQL的checksum函數(shù)

如有不對(duì)的地方,歡迎大家拍磚o(∩_∩)o


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 怀来县| 阳曲县| 新巴尔虎左旗| 司法| 诸暨市| 高密市| 日土县| 古交市| 滨海县| 库尔勒市| 铅山县| 兴安盟| 长武县| 格尔木市| 苏尼特右旗| 湖南省| 全椒县| 三原县| 崇阳县| 井研县| 偃师市| 榆树市| 陕西省| 周口市| 西青区| 昌宁县| 铜山县| 东源县| 精河县| 盘山县| 兴国县| 潜江市| 建昌县| 井冈山市| 庆元县| 凤山市| 绥棱县| 三穗县| 扎赉特旗| 布尔津县| 林口县|