原文:leveldb源碼分析--SSTable之Compaction

對於compaction是leveldb中體量最大的一部分,也應該是最為復雜的部分,為了便於理解我們首先從一些基本的概念開始。下面是一些從doc impl.html中翻譯和整理的內容: Level 當日志文件超過一定大小的閾值是 默認為 MB : 建立一個新的memtable和日志文件,以后的操作都是用新的memtable和日志文件 后台進行如下操作: 將舊的 memtable寫到SSTable中 ...

2014-07-01 21:59 0 7790 推薦指數:

查看詳情

LevelDB源碼閱讀(四) Compaction操作

leveldb的數據存儲采用LSM的思想,將隨機寫入變為順序寫入,記錄寫入操作日志,一旦日志被以追加寫的形式寫入硬盤,就返回寫入成功,由后台線程將寫入日志作用於原有的磁盤文件生成新的磁盤數據.Leveldb在內存中維護一個數據結構memtable,采用skiplist來實現,保存當前寫入的數據 ...

Thu Jan 18 19:42:00 CST 2018 0 1112
leveldb - sstable格式

整體上,sstable文件分為數據區與索引區,尾部的footer指出了meta index block與data index block的偏移與大小,data index block指出了各data block的偏移與大小,meta index block指出了各meta block的偏移 ...

Sun Dec 18 20:08:00 CST 2016 0 2820
LevelDB Compaction原理

manual compaction 手動觸發的compaction。手動觸發的優先級高於自動觸發。 自動觸發的compaction 觸發條件: imm_ != NULL 表示需要將Memtable dump成SSTable,發起Minor Compaction ...

Wed Mar 11 08:55:00 CST 2020 0 638
leveldb 源碼--總體架構分析

一 本文目的 對leveldb的總體設計框架分析(關於leveldb基本原理,此文不做闡述,讀者可以自行檢索文章閱讀即可),對leveldb中底層數據存儲數據格式,內存數據模型,compact,版本管理,快照等機制實現介紹以及整個leveldb實現源碼中各文件源碼的職責,方便快速對leveldb ...

Wed Oct 02 21:10:00 CST 2019 0 807
leveldb源碼分析--插入刪除流程

由於網絡上對leveldb分析文章都比較豐富,一些基礎概念和模型都介紹得比較多,所以本人就不再對這些概念以專門的篇幅進行介紹,本文主要以代碼流程注釋的方式。 首先我們從db的插入和刪除開始以對整個體系有一個感性的認識,首先看插入: Delete也類似,只是調用 ...

Sat Jun 28 23:11:00 CST 2014 0 2372
leveldb源碼分析--Iterator遍歷數據庫

在DBImpl中有一個函數聲明為Iterator* DBImpl::NewIterator(const ReadOptions& options) ,他返回一個可以遍歷或者搜索數據庫的迭代器句 ...

Sun Jul 06 07:07:00 CST 2014 0 3560
LevelDB源碼剖析

LevelDB的公共部件並不復雜,但為了更好的理解其各個核心模塊的實現,此處挑幾個關鍵的部件先行備忘。 Arena(內存領地) Arena類用於內存管理,其存在的價值在於: 提高程序性能,減少Heap調用次數,由Arena統一分配后返回到應用層。 分配后無需執行dealloc ...

Sat Dec 05 19:08:00 CST 2015 0 1905
LevelDB 源碼解析之 Arena

GitHub: https://github.com/storagezhang Emai: debugzhang@163.com 華為雲社區: https://bbs.huaweicloud.com/blogs/250328 LevelDB: https://github.com ...

Mon Mar 29 18:47:00 CST 2021 0 305
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM