RocksDB 是一种高性能键值存储引擎:
- 数据写入流程
- 先写日志(WAL):像记账本一样先记录操作日志,防止停电丢数据
- 再写内存(MemTable):用高效的跳表结构暂存最新数据
- 写日志是顺序写入,比直接写磁盘快10倍以上
- 数据存储结构
- SST文件:内存满了就把数据"冷冻"成不可修改的排序文件
- 分7层存储:越下层数据越多(L0最小,L6最大)
- 90%数据最终沉到最底层L6
- 数据合并机制
- 定期"整理收纳":把小文件合并成大文件(Compaction)
- L0有4个文件就触发整理(默认值)
- L0文件超过20个会降速写入,36个就完全暂停写入
- 读取优化
- 块缓存(BlockCache):像CPU缓存一样缓存热点数据块(默认64KB/块)
- 使用LRU算法自动淘汰冷数据- 建议分配机器45%-60%内存给缓存
- 特殊功能
- 列族(ColumnFamily):多个独立数据集共享同一个WAL日志
- 支持多种压缩算法:每层可用不同压缩方式(如LZ4/Zstd)
关键技术特点:
- 写放大:后台整理会重复写入数据
- 读放大:查数据可能要查多层文件
- 空间放大:未整理的文件会占用额外空间
RocksDB就像一个智能仓库:
- 新货先登记账本(WAL),放临时货架(MemTable)
- 临时货架满了就打包成标准箱子(SST)
- 小箱子定期合并成大箱子(Compaction)
- 常用货品放显眼位置(BlockCache)
- 不同类型商品分区分装(ColumnFamily)
















