现代查询引擎严重依赖散列表进行查询处理。总体查询性能和内存占用通常由散列表及其元组的表示方式决定。本文提出了三种互补的技术来改进这种表示:域引导的前缀抑制将键和值紧密打包,以减少哈希表记录宽度。乐观拆分将值(以及对它们的操作)分解为频繁访问的值切片和非频繁访问的值切片。通过移除哈希表记录中访问频率不高的值切片,提高了缓存局部性。唯一字符串自定位区域(苏联)通过创建一个最频繁字符串的动态字典来加速处理频繁出现的字符串,这些字符串在现实世界的数据集中很常见。这允许使用整数逻辑执行许多字符串操作,并减少内存压力。
我们将这些技术集成到Vectorwise中。在TPC-H测试集上,该方法将峰值内存消耗降低了2 ~ 4倍,性能提升了1.5倍。在一个真实的BI工作负载上,我们测量到了2倍的性能提升,在微基准测试中,我们观察到高达25倍的速度提升