日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

SQL Server 2005中的CHECKSUM功能

系統(tǒng) 2196 0
原文: SQL Server 2005中的CHECKSUM功能

轉(zhuǎn)自此處

頁(yè)面?checksum?是SQL2005的新功能,提供了一種比殘缺頁(yè)檢測(cè)強(qiáng)大的機(jī)制檢測(cè)IO方面的損壞。以下是詳細(xì)描述:

頁(yè)面?CHECKSUM:

在數(shù)據(jù)庫(kù)頁(yè)面從被寫(xiě)入磁盤(pán)到被SQL Server讀取的這段時(shí)間內(nèi),有可能由于外界原因發(fā)生損壞。比如I/O設(shè)備的損壞,驅(qū)動(dòng)的損壞或者由于電源不穩(wěn)沒(méi)有寫(xiě)完整。Checksum機(jī)制使SQL Server可以檢測(cè)到這些損壞。需要注意的是,Checksum機(jī)制只能使我們確定是不是I/O子系統(tǒng)引起頁(yè)面損壞,但是不能自動(dòng)修復(fù)它們。作為管理員,我們可以利用這些信息來(lái)辨識(shí)出并更換損壞的I/O設(shè)備,也可以利用重建索引或者修復(fù)損壞文件等方法修復(fù)已發(fā)生的頁(yè)面損壞。

Checksum功能可以由Alter Database命令在數(shù)據(jù)庫(kù)上逐個(gè)開(kāi)啟和關(guān)閉每一個(gè)數(shù)據(jù)庫(kù)上的。當(dāng)開(kāi)啟Checksum時(shí),SQL Server會(huì)在頁(yè)面被寫(xiě)入和被讀取的時(shí)候計(jì)算頁(yè)面的Checksum。SQL Server基于頁(yè)面上的位模式計(jì)算Checksum,儲(chǔ)存在頁(yè)頭部,然后發(fā)一個(gè)I/O來(lái)寫(xiě)頁(yè)面。SQL Server在讀取頁(yè)面時(shí)用相同的方法再計(jì)算一次checksum,并與儲(chǔ)存在頁(yè)面頭的checksum值進(jìn)行比較。如果結(jié)果相同則說(shuō)明在讀寫(xiě)周期內(nèi)頁(yè)面沒(méi)有損壞。計(jì)算checksum的算法是復(fù)雜的,因?yàn)闀?huì)涉及到多個(gè)頁(yè)面的讀寫(xiě),增加CPU的負(fù)荷,可能會(huì)影響系統(tǒng)的吞吐量。此外,checksum不是與頁(yè)面位模式一一對(duì)應(yīng)的,不同頁(yè)面也有可能有相同的checksum值,所以有極小的可能性事頁(yè)面損壞檢查不出來(lái)。

我們對(duì)以下幾種情況特別做一些說(shuō)明:

l??數(shù)據(jù)庫(kù)創(chuàng)建一段時(shí)間后才開(kāi)啟checksum

只有在開(kāi)啟checksum功能后每次寫(xiě)頁(yè)面時(shí)才會(huì)計(jì)算checksum,讀取頁(yè)面時(shí)才會(huì)重新計(jì)算。如果數(shù)據(jù)庫(kù)創(chuàng)建之初沒(méi)有開(kāi)啟Checksum,會(huì)有一些頁(yè)沒(méi)有記錄下checksum。當(dāng)讀取這些頁(yè)面時(shí)SQL Server不會(huì)計(jì)算checksum,因?yàn)闆](méi)有可以用來(lái)比較的checksum,計(jì)算就沒(méi)有意義。目前沒(méi)有命令或工具強(qiáng)制計(jì)算數(shù)據(jù)庫(kù)所有頁(yè)面的checksum。這樣做并??有太大的好處。試想,當(dāng)數(shù)據(jù)頁(yè)面已經(jīng)被破壞時(shí),我們只能計(jì)算損壞的checksum,而不知道正常情況下的checksum,損壞也無(wú)從檢測(cè)。當(dāng)然,如果有這樣的命令或工具存在,我們就能檢測(cè)到由于位損壞(如一個(gè)有效的頁(yè)在被寫(xiě)入到磁盤(pán)后發(fā)生損壞)引起的頁(yè)面損壞,或者在數(shù)據(jù)庫(kù)文件被轉(zhuǎn)移或者復(fù)制到其他媒介的時(shí)檢測(cè)到損壞了。

l??停止checksum功能

當(dāng)不希望checksum消耗CPU資源或者確信I/O系統(tǒng)可靠的時(shí)候,您可以停止Checksum功能。停止后,不再計(jì)算和記錄checksum值。這種情況下,?SQL Server就可能受到外界造成的頁(yè)面損壞,一個(gè)檢測(cè)不到的損壞可能導(dǎo)致:

o??????數(shù)據(jù)丟失,除非運(yùn)行全備份恢復(fù)(前提是日志備份沒(méi)有被破壞)

o??????潛在的應(yīng)用程序異常,特別是在損壞沒(méi)有改變頁(yè)面結(jié)構(gòu)而只是改變了某些數(shù)據(jù)時(shí)。

o??????降低數(shù)據(jù)庫(kù)的可用性,因?yàn)楸仨氁獔?zhí)行介質(zhì)恢復(fù)來(lái)修正損壞。

l??如何驗(yàn)證數(shù)據(jù)庫(kù)所有頁(yè)的checksum

使用DBCC CHECKDB命令,最好加上PHYSICAL_ONLY參數(shù)以降低資源的消耗。

l??數(shù)據(jù)庫(kù)開(kāi)啟殘缺頁(yè)(torn page)檢測(cè)

數(shù)據(jù)庫(kù)的Checksum檢測(cè)和殘缺頁(yè)檢測(cè)不能同時(shí)開(kāi)啟。因?yàn)閏hecksum機(jī)制對(duì)于頁(yè)面損壞的驗(yàn)證比殘缺頁(yè)更嚴(yán)格,而產(chǎn)生checksum匹配但是頁(yè)面殘缺的可能性極小,所以開(kāi)啟checksum相當(dāng)于自動(dòng)獲取殘缺頁(yè)檢測(cè)。如果您關(guān)閉了頁(yè)面的checksum功能,那我們建議您開(kāi)啟殘缺頁(yè)檢測(cè),用較小的代價(jià)盡可能檢測(cè)I/O子系統(tǒng)異常。

備份?checksum

備份checksum和頁(yè)面checksum算法一樣,每當(dāng)頁(yè)面做備份時(shí)計(jì)算checksum,只不過(guò)多個(gè)頁(yè)面checksum的值將合并成一個(gè)備份checksum值。備份checksum儲(chǔ)存在備份媒介,而不是頁(yè)面中。備份期間您可以選擇生成備份checksum用于恢復(fù)備份時(shí)檢測(cè)備份時(shí)候損壞。另外,如果頁(yè)面checksum可用,可以在備份和恢復(fù)過(guò)程中用于確認(rèn)。

SQL Server 2005中的CHECKSUM功能


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 泗洪县| 松潘县| 韩城市| 确山县| 晋江市| 莱阳市| 梅河口市| 穆棱市| 通江县| 琼海市| 桐城市| 林周县| 大方县| 惠水县| 安溪县| 黎平县| 新野县| 革吉县| 镇远县| 古丈县| 敦化市| 寿光市| 久治县| 金沙县| 塘沽区| 旌德县| 张掖市| 永新县| 海宁市| 卢湾区| 丰宁| 双峰县| 连州市| 广河县| 本溪市| 吴堡县| 花垣县| 丹凤县| 洪雅县| 五常市| 琼海市|