文件名称:Compaction过程-空间谱估计算法及应用 王永良
文件大小:8.18MB
文件格式:PDF
更新时间:2024-07-13 16:36:40
leveldb rocksdb leveldb架构
8.2 Compaction过过过程程程 由上述所示,compaction分为两类: • minor compaction • major compaction 这两类compaction负责在不同的场景下进行不同的数据整理。 8.2.1 Minor Compaction 一次minor compaction非常简单,其本质就是将一个内存数据库中的所有数据持久化到一个磁盘文件中。 每次minor compaction结束后,都会生成一个新的sstable文件,也意味着Leveldb的的的版版版本本本状状状态态态发发发生生生了了了变变变化化化,,,会会会 进进进行行行一一一个个个版版版本本本的的的更更更替替替。有关版本控制的内容,将在接下去一篇文章中详细展开。 值得注意的是,minor compaction是一个时效性要求非常高的过程,要求其在尽可能短的时间内完成,否 则就会堵塞正常的写入操作,因此minor compaction的的的优优优先先先级级级高高高于于于major compaction。当进行minor com- paction的时候有major compaction正在进行,则会首先暂停major compaction。 8.2.2 Major Compaction 相比于minor compaction,major compaction就会复杂地多。首先看一下一次major compaction的示意图。 0层中浅蓝色的三个sstable文件,加上1层中的绿色的sstable文件,四个文件进行了合并,输出成两个按序组 织的新的1层sstable文件进行替换。 条条条件件件 那么什么时候,会触发leveldb进行major compaction呢。总结地来说为以下三个条件: • 当0层文件数超过预定的上限(默认为4个); 52 Chapter 8. compaction