1. compaction介绍
对于LevelDb来说,写入记录操作很简单,删除记录仅仅写入一个删除标记就算完事,但是读取记录比较复杂,需要在内存以及各个层级文件中依照新鲜程度依次查找,代价很高。为了加快读取速度,levelDb采取了compaction的方式来对已有的记录进行整理压缩,通过compaction操作可以达到以下几个效果:
- 其一是将内存的数据持久化到磁盘,压缩服务器使用的内存;
- 其二是在服务器灾难恢复过程中,减少必须从提交日志里读取的数据量,如果没有进行落盘,那么都需要从日志中进行恢复;
- 其三是清理冗余数据,因为LevelDB的更新和删除操作具有延后性,两种操作实际上都会向LevelDB写入一条新记录,所以通过重新compaction整理数据,可以清理冗余数据,节省磁盘空间;
- 其四是通过compaction使level 0以下的文件层中的数据保持有序,这样便可以通过二分进行数据查找,同时也可以减少待查找的文件数量,提升读效率;
levelDb的compaction机制和过程与Bigtable所讲述的是基本一致的,Bigtable中讲到三种类型的compaction: minor 、major、full。
- minor Compaction:就是把memtable中的数据导出到SSTable文件中;
- major compaction:就是合并不同层级的SSTable文件
- full compaction:就是将所有SSTable进行合并
LevelDb包含其中两种,minor和major。

:LevelDb的Compaction操作&spm=1001.2101.3001.5002&articleId=117196588&d=1&t=3&u=eca992798ddc4fba94dbf649de233900)
1501

被折叠的 条评论
为什么被折叠?



