BinDex: A Two-Layered Index for Fast and Robust Scans

在现代分析数据库系统中,数据扫描操作的性能对查询执行的性能至关重要。现有的扫描方法可分为索引扫描和顺序扫描。然而,这两种方法都有固有的低效率。事实上,顺序扫描可能需要访问大量不需要的数据,特别是在选择性较低的查询中。相反,当查询选择性很高时,索引扫描可能涉及大量昂贵的随机内存访问。此外,随着数据库查询工作负载的日益复杂,很难预测哪种方法更适合特定的查询。

为了在所有选择项下获得快速且鲁棒的扫描,提出了一种基于分箱位图的双层索引结构BinDex,用于显著加速内存列存储的扫描操作BinDex的第一层由一组分箱位图组成,它过滤掉了列中大多数不需要的值。第二层提供一些辅助信息来纠正有错误值的比特位。通过改变第一层位向量的数量,BinDex可以在内存空间和性能之间做出权衡。实验结果表明,与B+树相比,BinDex具有更好的性能和更少的内存开销。通过扩大内存空间,BinDex可以获得高达2.9倍的性能提升,无需在顺序扫描或索引扫描之间进行选择。

背景:1)在这种情况下,因为满足谓词的值可能散布在所有列上,索引扫描可能涉及对基本数据和索引数据结构的多次随机内存访问。众所周知,随机存储器访问的操作时间比顺序存储器访问的操作时间大一个数量级。因此,随机访问的开销会抵消顺序扫描在选择性变高时避免访问不必要数据所带来的好处,而顺序扫描的性能将优于索引扫描。总的来说,索引扫描和顺序扫描都有其固有的低效率。

总之

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值