在现代联机事务处理数据库中,使用索引执行查询是获得高性能的关键。然而,对于内存数据库来说,这些索引消耗了可用内存的很大一部分,因此是内存数据库存储开销的主要来源。为了减少这种开销,我们建议使用两阶段索引:第一阶段采集所有传入的条目,并保持较小的规模以供快速读写操作。索引周期性地将数据项从第一阶段迁移到第二阶段,后者使用更紧凑的、读优化的数据结构。本文的第一个贡献是混合索引,一种双阶段的索引结构,实现了空间效率和高性能。本文的第二个贡献是双阶段转换(DST),一套将任何保序索引结构转换为混合索引的指导方针。第三个贡献是将DST应用于四种流行的保序索引结构,并使用几种事务处理工作负载在独立的微基准测试和全内存DBMS中对它们进行评估。实验结果表明,混合索引提供了与原始索引相当的吞吐量,同时减少了高达70%的内存开销。
方法:
本文提出了混合索引(hybrid index),一种双阶段的索引架构,即使在回收的内存没有被用来提高系统性能的情况下,它也显著地减少了每个元组的索引空间,而在吞吐量和延迟方面的代价并不大(事实上,对于某些工作负载,实际上更快)。
双阶段架构维护了一个小型的动态“热点”存储来吸收写入,以及一个更紧凑但只读的存储来保存大量的索引项。阶段之间的合并是周期性触发的,可以有效地执行。与之前的工作[20,35,39,47,53]不同,我们的设计为点查询和短程扫描提供了低延迟和高吞吐量,这是与内存数据库一起使用的OLTP工作负载的典型特征[34,50]。