论文部分内容阅读
随着信息技术的快速发展,各类数据呈爆炸式的增长,数据库系统成为近年来计算机领域的热点研究方向。目前对于数据库系统的研究主要包括:查询执行、查询优化以及数据存储。查询执行是数据库系统的核心部分,包含各种数据库的基本操作,有重要的研究意义。随着半导体技术的发展,单核处理器的性能提升空间十分有限,多核处理器的快速发展,已经成为处理器市场的主流。除此之外,存储器的容量也越来越大,价格越来越便宜,数据库系统中全部数据或者大部分数据放入内存已成为可能。内存数据库的兴起,使研究人员将研究的重点放到了提升数据库算法的运算效率以及提升内存存取效率上,而不再关注硬盘的存取效率。尽管近年来在多核内存数据库查询执行优化技术领域的研究不断取得新的进展,但在利用多核处理器并行资源对一些数据库基本操作进行优化方面,存在有待提高和完善之处。结合目前数据库查询执行领域的研究成果,针对一些数据库基本操作存在的不足,本文利用多核处理器的并行资源对内存数据库中哈希划分算法、自适应索引算法、哈希连接算法进行了优化,其主要工作概括如下:(1)本文总结了多核处理器中解决线程之间冲突的常用方法,这些方法包括:加锁策略、独立空间策略、两次遍历策略,以及并行缓存策略,并分析了这些方法各自的优缺点。在此基础上,针对目前并行哈希划分算法存在的问题,应用和提出了多种改进方法。其中,软件合并写优化先将数据放入较小的缓存区中,当缓存区放满后再放入最终划分结果中,这样可以有效地降低TLB miss数量;绕过缓存优化通过non-temporal writing操作将短期内不再使用的数据直接写入相应的内存地址中,避免通过缓存,提高写操作效率;改进的哈希表支持内存动态分配,保证能够使用软件合并写优化和绕过缓存优化的同时,提高了存取效率,降低了初始化开销;负载均衡优化使得该算法能够适应有倾斜的输入数据。通过实验分析,本文使用的优化方法能够有效地提高并行哈希算法的效率,并使之适应有倾斜的数据样式。(2)本文总结了现有的各种自适应索引算法,并分析其优缺点。在此基础上提出了一种自适应选择优化策略的方法,该方法可以通过划分位置、查询选择率来自动选择优化策略,提升自适应索引算法的效率。除此之外,该方法能根据数据块的查询次数,动态地调整Buffered-swapping Cracking算法中堆结构的大小,提升该算法效率。其次,在原有Adaptive Merging算法的基础上,提出了多核并行Adaptive Merging算法。该方法通过并行排序算法实现了索引结构的初始化,利用线程级并行和基数排序的方法实现了查询语句的执行和索引结构的优化。然后,又研究了多核并行自适应索引算法的优化技术,将加锁并行方法与改进的PartitionMerge算法相结合,在索引中数据块较少时,使用改进的Partition Merge算法,降低线程之间冲突的概率,减少线程等待时间,提高线程利用率;当索引中数据块较多时,使用加锁并行方法,充分利用了多核处理器的并行资源,且提高了算法的鲁棒性。最后,通过实验验证了本文提出的自适应选择优化策略方法、并行Adaptive Merging算法和多核并行自适应索引优化算法的可行性和有效性。(3)本文利用线程级并行和数据级并行优化哈希连接算法。首先提出了基于多核MapReduce模型的并行哈希连接算法,包括非划分哈希连接和划分哈希连接。其次,本文为并行哈希连接算法提出了一种改进的Cuckoo哈希表,该表由传统的Cuckoo哈希表和链式哈希表组成,通过提升哈希表的读写性能来提升并行哈希连接算法的性能。基于上述成果,本文又提出了几种优化方法,包括:利用SIMD指令优化、多步划分优化、负载平衡优化。最后,通过实验验证了本文提出的优化方法可行有效,实验表明:(1)基于多核MapReduce模型的并行哈希连接算法与前期算法相比,取得较好的效果;(2)在多核处理器环境下,划分哈希连接大部分情况下都优于非划分哈希连接,且当线程数量较大时内存存取成为性能瓶颈;(3)影响哈希连接算法性能的因素包括:哈希表的结构、划分数量、划分次数、线程数量、数据集等。