随笔分类 - leveldb
leveldb源码分析
摘要:概述 leveldb支持一个进程中多线程访问 leveldb会启动一个后端线程进行compact操作 涉及的竟态访问资源,memtable,sstable,manifest,各种文件的生成和删除 写操作 通过写队列的方式,只允许一个线程进行写操作 并且在写log和memtable会进行unlock,
阅读全文
摘要:跳表 参考资料 Skip List--跳表 特点 跳表插入、删除、查找元素的时间复杂度跟红黑树都是一样量级的,时间复杂度都是O(logn) 空间换时间,如果每层有1/2的概率保存数据,那么需要2n的空间 最底层链表会按顺序保存所有数据,因此区间查找效率高 leveldb跳表实现 节点定义 Node只
阅读全文
摘要:Open open主要有两个功能:加载元数据重建current version和对log进行重做 graph TD; DB::Open==>DBImpl::Recover DBImpl::Recover-->Env::LockFile Env::LockFile-->Env::FileExists{
阅读全文
摘要:一. 数据库文件 leveldb每个数据库对应一个目录并且每个数据库只能被一个进程打开。 *.ldb:数据存储文件 *.log:日志文件 MANIFEST-*:元数据信息 CURRENT:当前版本的元数据文件名 LOCK:文件锁,避免被多个进程打开 LOG:leveldb日志信息 二. 元数据文件
阅读全文

浙公网安备 33010602011771号