預寫日誌 WAL 介紹

2021-07-31 23:38:07 字數 582 閱讀 2740

預寫日誌(wal,write ahead log)是關係型資料庫中用於實現事務性和永續性的一系列技術。簡單來說就是,做乙個操作之前先講這件事情記錄下來。

為什麼要使用wal呢?比如你的備忘錄裡面有如下記錄:

2015.12.25 理髮

2015.12.28 整容

2015.12.31 修指甲 (別亂想,博主並非女孩)

如果某一天你忘記了自己是如何變成現在這個樣子的,那你可以去翻看你的備忘錄,然後按照備忘錄的記錄依次執行,你就能找到答案。

為什麼要使用wal呢?上面的解釋比較秀逗,本節說一下真正的原因:真正的執行操作可能資料量會比較大,操作比較繁瑣,並且寫資料不一定是順序寫,所以如果每一次操作都要等待結果flush到可靠儲存(比如磁碟)中才執行下一步操作的話,效率就太低了。換一種思路,如果我們在做真正的操作之前,先將這件事記錄下來,持久化到可靠儲存中(因為日誌一般很小,並且是順序寫,效率很高),然後再去執行真正的操作。這樣執行真正操作的時候也就不需要等待執行結果flush到磁碟再執行下一步,因為無論在哪一步出錯,我們都能夠根據備忘錄重做一遍,得到正確的結果。

這篇文章應該是本部落格最簡短的一篇了,但是我覺得我解釋得夠清晰形象了,你們覺得呢?

HBase 預寫日誌 WAL

wal 最重要的作用是災難恢復,一旦伺服器崩潰,通過重放 log,我們可以恢復崩潰之前的資料。如果寫入 wal失敗,整個操作也將認為失敗。圖6 wal 基本流程 首先,客戶端初始化乙個可能對資料改動的操作,如put put delete delete 和 incrementcolumnvalue 這...

HBase 預寫日誌 WAL

wal最重要的作用是災難恢復,一旦伺服器崩潰,通過重放 log,我們可以恢復崩潰之前的資料。如果寫入 wal失敗,整個操作也將認為失敗。圖6wal 基本流程 首先,客戶端初始化乙個可能對資料改動的操作,如 put put delete delete 和incrementcolumnvalue 這些操...

HBase 預寫日誌 WAL

wal 最重要的作用是災難恢復,一旦伺服器崩潰,通過重放 log,我們可以恢復崩潰之前的資料。如果寫入 wal失敗,整個操作也將認為失敗。圖6wal 基本流程 首先,客戶端初始化乙個可能對資料改動的操作,如put put delete delete 和incrementcolumnvalue 這些操...