Reducing Write Amplification of LSM-Tree with Block-Grained Compaction

Reducing Write Amplification of LSM-Tree with Block-Grained Compaction

LSM-tree作为一种写优化的存储引擎,广泛应用于LevelDB和RocksDB等键值存储系统中。然而,传统的LSM-tree上的合并操作需要读取、合并和写入许多sstable,本文称之为表合并。表合并会导致两个主要问题,即写放大和块缓存失效它们会降低lsm树的写和读性能。为了解决这些问题,我们提出了一种新的合并方案——块合并方案,该方案采用块粒度的合并策略来执行LSM-tree上的合并操作。块合并(Block Compaction)通过确定数据块的边界,尽量避免数据块的重复使用,既减少了写放大,又缓解了块缓存失效问题。通过代价分析,从理论上证明了块合并比表合并更高效。

此外,我们还分析了块合并的副作用,并提出了3种优化方法:(1)选择性合并,通过将表合并与块合并相结合来减少块合并带来的空间放大;(2)并行合并将合并任务划分为多个子任务,使用多个worker并行完成子任务。(3)延迟删除减少了在合并操作的末尾遍历文件所带来的开销。我们基于块合并及其优化实现了一个名为BlockDB的新的键值存储。然后,我们使用YCSB基准将BlockDB与LevelDB、RocksDB和L2SM进行比较。实验结果表明,BlockDB与同类算法相比,最高可降低32%的写放大,最高可降低43.6%的运行时间。此外,它还能保持点查找和范围扫描的高性能。

方法: 

本文提出了一种新的合并方法,称为块合并(Block

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值