日志

为了防止写入内存的数据库因为进程异常、系统掉电等情况发生丢失,leveldb在写内存之前会将本次写操作的内容写入日志文件中。

日志 - 图1

在leveldb中,有两个memory db,以及对应的两份日志文件。其中一个memorydb是可读写的,当这个db的数据量超过预定的上限时,便会转换成一个不可读的memorydb,与此同时,与之对应的日志文件也变成一份frozen log。

而新生成的immutable memory db则会由后台的minorcompaction进程将其转换成一个sstable文件进行持久化,持久化完成,与之对应的frozenlog被删除。

在本文中主要分析日志的结构、写入读取操作。