LevelDB Version
2015-10-14 21:44
155 查看
【LevelDB Version】
Version 保存了当前磁盘以及内存中所有的文件信息,一般只有一个Version叫做"current" version(当前版本)。Leveldb还保存了一系列的历史版本,这些历史版本有什么作用呢?
当一个Iterator创建后,Iterator就引用到了current version(当前版本),只要这个Iterator不被delete那么被Iterator引用的版本就会一直存活。这就意味着当你用完一个Iterator后,需要及时删除它。
当一次Compaction结束后(会生成新的文件,合并前的文件需要删除),Leveldb会创建一个新的版本作为当前版本,原先的当前版本就会变为历史版本。
VersionSet 是所有Version的集合,管理着所有存活的Version。
VersionEdit 表示Version之间的变化,相当于delta 增量,表示有增加了多少文件,删除了文件。下图表示他们之间的关系。
Version0 +VersionEdit-->Version1
VersionEdit会保存到MANIFEST文件中,当做数据恢复时就会从MANIFEST文件中读出来重建数据。
参考:/content/3751355.html
Version 保存了当前磁盘以及内存中所有的文件信息,一般只有一个Version叫做"current" version(当前版本)。Leveldb还保存了一系列的历史版本,这些历史版本有什么作用呢?
当一个Iterator创建后,Iterator就引用到了current version(当前版本),只要这个Iterator不被delete那么被Iterator引用的版本就会一直存活。这就意味着当你用完一个Iterator后,需要及时删除它。
当一次Compaction结束后(会生成新的文件,合并前的文件需要删除),Leveldb会创建一个新的版本作为当前版本,原先的当前版本就会变为历史版本。
VersionSet 是所有Version的集合,管理着所有存活的Version。
VersionEdit 表示Version之间的变化,相当于delta 增量,表示有增加了多少文件,删除了文件。下图表示他们之间的关系。
Version0 +VersionEdit-->Version1
VersionEdit会保存到MANIFEST文件中,当做数据恢复时就会从MANIFEST文件中读出来重建数据。
参考:/content/3751355.html
相关文章推荐
- 最大化最小值 Aggressive cows
- 笔试题——静态变量和实例变量的区别
- Lync Server 2010标准版前端服务器迁移之一:新建中央站点(中)
- 利用php-java-bridge包实现PHP调用JAVA类
- 请勿滥用 2PC, 忘记提交prepared transaction对PostgreSQL造成的危害.
- AutoCloseable的用法
- JAVA for循环语句的循环变量类型问题
- 共勉浮生
- Android的事件处理2
- Thinkphp——(后台栏目列表)栏目及子栏目的创建及显示实例操作
- POJ 1230 Pass-Muraille 贪心
- Netfilter框架通过hook捕获数据包
- linux shell命令快捷获得系统帮助(一)[man-pages定义规范]
- 编写一个猜数字游戏
- Java数组排序算法,冒泡,选择,插入,快速排序
- 接口interface的使用(一)
- 在两个有序数组中找到中位数
- 使用pg_xlogdump找到精准的误操作XID
- Unity中的跳跃设计
- 《UNIX网络编程》读书笔记2---2-5章,套接字断开2,3事