在现代分析数据库系统中,数据扫描操作的性能对查询执行的性能至关重要。现有的扫描方法可分为索引扫描和顺序扫描。然而,这两种方法都有固有的低效率。事实上,顺序扫描可能需要访问大量不需要的数据,特别是在选择性较低的查询中。相反,当查询选择性很高时,索引扫描可能涉及大量昂贵的随机内存访问。此外,随着数据库查询工作负载的日益复杂,很难预测哪种方法更适合特定的查询。
为了在所有选择项下获得快速且鲁棒的扫描,提出了一种基于分箱位图的双层索引结构BinDex,用于显著加速内存列存储的扫描操作。BinDex的第一层由一组分箱位图组成,它过滤掉了列中大多数不需要的值。第二层提供一些辅助信息来纠正有错误值的比特位。通过改变第一层位向量的数量,BinDex可以在内存空间和性能之间做出权衡。实验结果表明,与B+树相比,BinDex具有更好的性能和更少的内存开销。通过扩大内存空间,BinDex可以获得高达2.9倍的性能提升,无需在顺序扫描或索引扫描之间进行选择。
背景:1)在这种情况下,因为满足谓词的值可能散布在所有列上,索引扫描可能涉及对基本数据和索引数据结构的多次随机内存访问。众所周知,随机存储器访问的操作时间比顺序存储器访问的操作时间大一个数量级。因此,随机访问的开销会抵消顺序扫描在选择性变高时避免访问不必要数据所带来的好处,而顺序扫描的性能将优于索引扫描。总的来说,索引扫描和顺序扫描都有其固有的低效率。
总之