摘要:目的在硬盤數(shù)據(jù)不損壞的情況下,預(yù)寫式日志允許存儲系統(tǒng)在崩潰后能夠在日志的指導(dǎo)下恢復(fù)到崩潰前的狀態(tài),避免數(shù)據(jù)丟失可以為非內(nèi)存型數(shù)據(jù)提升極高的效率,而且保證了數(shù)據(jù)的完整性。
什么是預(yù)寫式日志
在計算機科學(xué)中,預(yù)寫式日志(Write-ahead logging,縮寫 WAL)是關(guān)系數(shù)據(jù)庫系統(tǒng)中用于提供原子性和持久性(ACID屬性中的兩個)的一系列技術(shù),ARIES是WAL系列技術(shù)常用的算法,在文件系統(tǒng)中,WAL通常稱為journaling。
核心思想在使用WAL的系統(tǒng)中,所有的修改在提交之前都要先寫入log文件中,log文件中通常包括redo和undo信息,通過日志記錄描述好數(shù)據(jù)的改變后(redo和undo),再寫入緩存,等緩存區(qū)寫滿后,最后再往持久層修改數(shù)據(jù)。
目的在硬盤數(shù)據(jù)不損壞的情況下,預(yù)寫式日志允許存儲系統(tǒng)在崩潰后能夠在日志的指導(dǎo)下恢復(fù)到崩潰前的狀態(tài),避免數(shù)據(jù)丟失
可以為非內(nèi)存型數(shù)據(jù)提升極高的效率,而且保證了數(shù)據(jù)的完整性??梢酝ㄟ^一個例子來說明,假設(shè)一個程序在執(zhí)行某些操作的過程中機器掉電了,在重新啟動時,程序可能需要知道當(dāng)時執(zhí)行的操作是成功了還是部分成功或者是失敗了,如果使用了WAL,程序就可以檢查log文件,并對突然掉電時計劃執(zhí)行的操作內(nèi)容跟實際上執(zhí)行的操作內(nèi)容進行比較。在這個比較的基礎(chǔ)上,程序就可以決定是撤銷已做的操作還是繼續(xù)完成已做的操作,或者是保持原樣。
預(yù)寫式日志實現(xiàn)方式WAL允許用in-place方式更新數(shù)據(jù)庫,用in-place方式做更新的主要優(yōu)點是減少索引和塊列表的修改
另一種用來實現(xiàn)原子更新的方法是shadow paging,它并不是in-place方式
參考預(yù)寫式日志
Write Ahead Log 雜談
Write-Ahead logging(WAL)預(yù)寫式日志
Write Ahead Logging
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/17893.html
閱讀 1776·2023-04-25 16:28
閱讀 715·2021-11-23 09:51
閱讀 1491·2019-08-30 15:54
閱讀 1176·2019-08-30 15:53
閱讀 2857·2019-08-30 15:53
閱讀 3448·2019-08-30 15:43
閱讀 3287·2019-08-30 11:18
閱讀 3315·2019-08-26 10:25