Recover
数据库每次启动时,都会有一个recover的过程,简要地来说,就是利用Manifest信息重新构建一个最新的version。
过程如下:
- 利用Current文件读取最近使用的manifest文件;
- 创建一个空的version,并利用manifest文件中的sessionrecord依次作apply操作,还原出一个最新的version,注意manifest的第一条sessionrecord是一个version的快照,后续的session record记录的都是增量的变化;
- 将非current文件指向的其他过期的manifest文件删除;
- 将新建的version作为当前数据库的version;
注解
注意,随着leveldb运行时间的增长,一个manifest中包含的sessionrecord会越来越多,故leveldb在每次启动时都会重新创建一个manifest文件,并将第一条sessionrecord中记录当前version的快照状态。
其他过期的manifest文件会在下次启动的recover流程中进行删除。
leveldb通过这种方式,来控制manifest文件的大小,但是数据库本身没有重启,manifest还是会一直增长。
当前内容版权归 rjl493456442 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 rjl493456442 .