
RocksDB
文章平均质量分 94
lifallen
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
RocksDB 核心入口:DB类源码解析(get,put,merge,delete,flush)
本文深入剖析了RocksDB的核心组件与工作机制,重点围绕写入路径、读取路径和后台操作三大模块展开: 写入体系 采用分层抽象设计,DB类作为统一接口,DBImpl提供主要实现 写入流程包含WAL日志、MemTable写入和可能的Flush触发 关键优化包括: 写组机制合并并发写入 流水线写入分离WAL与MemTable操作 原子写入保证跨列族一致性 读取体系 Get操作遵循LSM-Tree分层查找原则 ;MultiGet通过排序分组、批量I/O和异步协程实现高效批量读取原创 2025-08-04 20:29:47 · 675 阅读 · 0 评论 -
深入解析RocksDB的MVCC和LSM Tree level
RocksDB的版本控制机制解析 RocksDB通过多版本并发控制(MVCC)机制实现高效读写与数据一致性,其核心组件包括Version、VersionSet和VersionEdit。Version代表数据库在特定时间点的完整快照,包含LSM-Tree各层级的文件元数据;VersionSet管理所有列族的Version对象,形成双向链表;VersionEdit则记录增量变更。三者协同工作,确保数据操作的原子性和一致性。 关键特性: 不可变性:Version对象一旦创建便不再修改原创 2025-07-29 16:27:38 · 1868 阅读 · 0 评论 -
RocksDB跳表MemTable优化揭秘
RocksDB的SkipListRep是对跳表的高性能实现,通过多种优化手段提升存储性能:1)内存布局优化,将key数据与节点元数据连续存放提升缓存命中率;2)使用Arena内存池分配器减少内存碎片;3) LookaheadIterator利用访问局部性优化顺序扫描;4) 提供多种并发插入接口适应不同场景;5) 随机采样采用自适应算法。核心InlineSkipList实现更为精巧,通过三合一内存块、负索引指针等技巧实现了极致的缓存友好性,同时使用Splice对象缓存查找路径来优化顺序插入。原创 2025-07-27 15:20:00 · 946 阅读 · 0 评论 -
RocksDB 高效采样算法:水塘抽样和随机寻址
SkipListRep::UniqueRandomSample实现了两种高效采样算法,根据采样密度(m/N)自适应选择策略。高密度场景(m>√N)采用算法R(水塘抽样变种),通过单次遍历以变化的概率采样,时间复杂度O(N);低密度场景(m≤√N)采用随机寻址法,利用跳表特性直接定位随机节点,时间复杂度约O(m*logN)。两种策略通过std::unordered_set去重,其中随机寻址法包含5次重试机制确保采样成功率>99.9%。该设计体现了算法选择与工程实践的完美结合,针对不同数据规模自动选用最优方案。原创 2025-07-27 15:18:29 · 836 阅读 · 0 评论