溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

SQLServer的檢查點、redo和undo

發(fā)布時間:2020-08-16 15:23:41 來源:ITPUB博客 閱讀:340 作者:ywxj_001 欄目:關(guān)系型數(shù)據(jù)庫

SQLServer的檢查點、redo和undo

檢查點與恢復(fù)效率的關(guān)系
檢查點將臟數(shù)據(jù)頁從當(dāng)前數(shù)據(jù)庫的緩沖區(qū)高速緩存刷新到磁盤上。 這最大限度地減少了恢復(fù)時必須重做(Redo)的修改量。
為什么在日志文件中設(shè)置了檢查點之后,基于日志的恢復(fù)機(jī)制就可以提高效率了呢?如圖所示為檢查點發(fā)生時可能的事務(wù)的狀態(tài)。

SQLServer的檢查點、redo和undo

① 事務(wù)1
其start和commit日志記錄都發(fā)生在檢查點之前,這樣的事務(wù)其結(jié)果已經(jīng)反映到物理介質(zhì)上去了(因為檢查點會保證WAL協(xié)議,確保數(shù)據(jù)被寫入),所以在恢復(fù)時無須對該事務(wù)做Redo操作。
② 事務(wù)2
其start日志記錄在檢查點之前發(fā)生,其commit記錄在故障點之前發(fā)生,說明日志中事務(wù)已經(jīng)完美提交,但數(shù)據(jù)不一定已經(jīng)寫入,所以屬于圓滿事務(wù),需要Redo操作。
③ 事務(wù)3
其start日志記錄在檢查點之后發(fā)生,其commit記錄在故障點之前發(fā)生,說明日志中事務(wù)已經(jīng)完美提交,但數(shù)據(jù)不一定已經(jīng)寫入,所以屬于圓滿事務(wù),需要Redo操作。
④ 事務(wù)4
其start日志記錄在檢查點之后發(fā)生,其commit記錄在故障點之前尚未發(fā)生,說明日志中事務(wù)為中止事務(wù),需要Undo操作。
⑤ 事務(wù)5
其start日志記錄在檢查點之前發(fā)生,其commit記錄在故障點之前尚未發(fā)生,說明日志中事務(wù)為中止事務(wù),需要Undo操作。

由CheckPoint的機(jī)制可以看出,由于內(nèi)存中的數(shù)據(jù)往往比持久化存儲中的數(shù)據(jù)更新,而CheckPoint保證了這部分?jǐn)?shù)據(jù)能夠被持久化到磁盤,因此CheckPoint之前的數(shù)據(jù)一定不會再需要被Redo。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI