BitWeaving: Fast Scans for Main Memory Data Processing
基于主内存数据库的 scan 优化,提出的技术:BitWeaving,又分为两种:BitWeaving/V 和 BitWeaving/H;BW/H 相当于是bit 级别的水平分布,将列的数据水平的分布到不同segment 中,通过亦或、以及各种位运算技术,实现了 =、!=、<、<= 的比较操作,比较完之后,每个process word 分隔符bit就会被设置为 1 或者0,然后将上下四组分别做不同的位移在 or,就能得到最终结果;BW/V 实现bit 级别的列存储,一列数据将每个数据的第一个bit存到 process word v1中,第二列存到 v2中,按照这种分布就可以实现早期裁剪,SIMD 再进一步优化,他的scan很快,但是查找需要跨多个processor word,相当于是垂直的从左往右计算,性能会 BW/H要差;而对于 VBP,其真实数据布局可以再优化,比如原先 9个processor word 一个segment,变成一个segment 3个 bit group,每个bit group 3个 processor word,这样做 cut-off的时候可以不用再加载斗鱼的processor word,节省了内存带宽,减少cache miss;从性能对比看,BW 技术在scan方面是最好的,SIMD有打包和对其开销所以效果远不如 BW,而BW 存在选择 BW/V 和 BW/H 布局的问题,也是待研究的问题