The Log-structured merge-tree

RocksDB采用LSM-tree数据结构,通过顺序写入WAL保证数据完整,利用memtable和immtablememtable进行快速查找。当memtable满后转为immutable并后台刷入磁盘,数据按层存储,逐层合并。查询时优先在内存中查找,借助内存缓存和bloomfilter加速。这种方式减少了磁盘寻道时间,提升了查询效率。
摘要由CSDN通过智能技术生成

rocksDB被越来越多的作为存储引擎使用,其存储的数据结构LSM-tree使得数据在磁盘上有序存储,相对于B+tree减少了寻道时间,提升查询效率。

1、写入过程

  1. 数据顺序写入WAL,保证数据不丢。
  2. 写入memtable,memtable是按key排序的skiplist。写入memtable后返回客户端写入成功。
  3. memtable写满后(默认32M),转换为immutable memtable。
  4. 后台线程将immutable memtable刷到磁盘,磁盘数据分层存储,L0层是immutable memtable的存储层所以文件内有序,文件之间key是无序的。
  5. 上层文件少,下层文件多, 一般下一层是上一层的10倍。上层写满后,数据被merge到下一层,除了L0其他层中各个SST file之间也是有序的。被合并到下一层的数据在上一层被删除。

2、查找过程

  1. 先在memtable和immtable memtable中查找
  2. 1中没找到,再到各层中查找,每层中数据是有序的,查找效率高。
  3. 在内存中缓存key,或者使用bloom filter加速查找过程。

在这里插入图片描述

参考文献

  1. https://github.com/facebook/rocksdb/wiki/RocksDB-Overview
  2. https://rocksdb.org.cn/doc/Write-Ahead-Log.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值