rocksdb原始碼解析 log檔案恢復

2021-07-29 15:25:57 字數 621 閱讀 9814

我們知道rockdb作為kv儲存,採用的wal方式來寫日誌,即預寫日誌,每次要對資料操作之前,先寫日誌儲存起來,然後在進行相應操作。這樣當發生某些意外而導致還未寫到磁碟中的資料丟失時,我們可以採用log檔案來進行恢復。通過讀取磁碟中的內容和已知的wal日誌,就可以恢復到最新的狀態。而memtable和未寫入磁碟的immemtable則從log檔案中讀出來,重做memtable和immemtable到sstable中即可。

整個恢復流程粗略如下流程圖:

在dbimpl::recover()函式中,newdb()是建立新的生成全新的manifest和current檔案,然後獲取wal檔案目錄,如果目錄為空,則返回,否則開始recoverlogfile()操作。恢復的是memtable及immtable中還未持久化到sstable中的資料。

接下來的日誌操作就是恢復記憶體中的資料了,重做日誌操作即是將日誌中記錄的操作讀取出來,然後再將讀取到的操作重新寫入到rocksdb中,如果快取大小大於寫快取尺寸,就寫入到儲存

Log4cpp原始碼解析 config

一 功能介紹 property configurator test file log4cpp.category.sub1.sub2 debug,a3該元件中包含兩個主要的類 configurator basicconfigurator propertyconfigurator propertycon...

Fabric 原始碼解析 原始碼目錄解析

這裡對重要的一些目錄進行說明 bccsp 與密碼學 加密 簽名 證書等等 相關的加密服務 將fabric中用到的密碼學相關的函式抽象成了一組介面,便於拓展。bddtests 一種新型的軟體開發模式 行為驅動開 需求 開發 common 一些公共庫 錯誤處理 日誌處理 賬本儲存 策略以及各種工具等等 ...

Spring原始碼解析之 Aop原始碼解析(2)

spring aop 更多的是oop開發模式的乙個補充,幫助oop以更好的方式來解決對於需要解決業務功能模組之上統一管理 的功能 以一副圖來做為aop功能的說明更直觀些。對於類似系統的安全檢查,系統日誌,事務管理等相關功能,物件導向的開發方法並沒有更好的解決方法 aop引入了一些概念。更多的是spr...