面向多核CPU和GPU平台的数据库星形连接优化
2021-03-18,3*
,3*
(1.数据工程与知识工程教育部重点实验室(中国人民大学),北京 100872;2.中国人民大学信息学院,北京 100872;3.中国人民大学中国调查与数据中心,北京 100872;4.中国气象局国家卫星气象中心,北京 100081)
0 引言
连接操作是关系数据库中最重要的操作之一,也是执行代价最大的操作之一,一直是数据库查询优化的核心问题。在典型联机分析处理(On-Line Analytical Processing,OLAP)负载中,事实表与维表之间的星形连接操作执行时间占到全部查询处理时间的80%左右[1],提高星形连接操作性能是提高OLAP 查询处理性能的决定因素。当前研究热点主要集中在连接操作性能优化方面,对多表星形连接优化技术研究相对较少,而两表连接与多表连接在优化算法选择策略上有较大的差异[2]。分区Radix join 连接算法性能优于无分区的哈希连接算法,但在多表连接操作中Radix join 算法由于需要多次物化无法流水处理而失去性能优势[3]。另一方面,多表连接时需要通过不同的策略优化中间连接结果,需要结合细粒度记录级流水处理、粗粒度列级处理和向量化处理策略进行优化设计,同时面向中央处理器(Central Processing Unit,CPU)cache 或图形处理器(Graphics Processing Unit,GPU)shared memory 优化多表连接中间结果的物化和访问策略,提高多表连接整体性能。
本文通过面向多核CPU 平台上L1 cache级的连接中间结果缓存和压缩技术,以及面向GPU 多cuda 核心共享Shared memory 的向量化处理技术使多表星形连接的中间结果物化和访问发生在访问性能较好的L1 cache 和Shared memory,减少延迟较高的内存物化和访问代价,从而提高整体连接性能。……
