ROART: Range-query Optimized Persistent ART——论文泛读

FAST 2021 Paper 论文阅读笔记整理

问题

新兴的非易失性存储器(NVM)由于其字节寻址能力、低延迟和持久性而具有吸引力。如何基于NVM设计持久索引,同时保证功能性、性能和正确性。

挑战

  • 功能性:可变大小的key和范围查询。为了支持这两点,作者选择基数树。

  • 性能:持久性开销。由于硬件的设计,NVM写入的吞吐量低于读取,带宽的可扩展性较差(因为多线程发出的写入超过了底层缓冲区的能力[48]),持久性操作的开销比正常写入要大得多(至少2.4倍)。

  • 正确性:异常处理和内存安全。如果持久性索引不能为并发操作提供保护,那么可能会出现更新丢失和脏读取,将导致系统崩溃和重启后成功操作的结果丢失。NVM中的内存分配需要处理崩溃一致性,这在DRAM中不是问题。由于(i)内存分配元数据不一致,(ii)非阻塞数据结构设计中使用的惰性GC(垃圾收集),在崩溃后可能会发生内存泄漏。

本文方法

设计了一种基于自适应基数树(ART)的持久索引ROART:

  • 为了优化范围查询:提出了一种叶子压缩方法,延迟了叶分割,并将多个叶节点压缩成一个叶数组。可以减少范围查询的指针追逐,可以减少复杂拆分操作的数量,倾向于降低树的高度对索引操作有益。

  • 为了优化持久性开销:条目压缩,将关键字和子指针组合在一个8字节的条目中;选择性元数据持久化,以减少要持久化的元数据树量;最小有序分割,其放松分割操作中的步骤顺序以减少sfence指令的数量。

  • 为了正确性:设计了快速的内存管理以防止内存泄漏,并通过即时重启策略消除了长恢复时间。同时进行崩溃后垃圾收集,在恢复期间执行后台GC时,索引可以同时处理前台请求,即立即重新启动服务。

评估结果显示,ROART在性能上超过了最先进的基数树最多1.65倍,并分别超过了B+-树1.17∼8.27倍。

实验

实验环境:Dell PowerEdge R740服务器,具有四个支持clwb的Intel(R)Xeon(R)Gold 5220处理器,每个插槽6×128GB Optane DC PMM,具有32KB的一级缓存、1MB的二级缓存和25MB的三级缓存。

数据集:YCSB

实验对比:吞吐量、空间消耗、崩溃恢复时间

总结

针对NVM场景下的持久存储设计,如何同时实现功能性(可变大小的key和范围查询)、性能(低持久性开销)、正确性(异常处理和内存安全)。作者提出基于基数树的持久索引:为了优化范围查询:提出叶子压缩方法,延迟了叶分割,并将多个叶节点压缩成一个叶数组;为了优化持久性开销:提出条目压缩,将关键字和子指针组合在一个8字节的条目中;为了优化持久性开销:选择性元数据持久化,以减少要持久化的元数据树量;为了优化持久性开销:提出最小有序分割,放松分割操作中的步骤顺序以减少sfence指令的数量;为了正确性:设计了快速的内存管理以防止内存泄漏,同时进行崩溃后垃圾收集,在恢复期间执行后台GC时,索引可以同时处理前台请求,实现立即重新启动服务。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妙BOOK言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值