技术新讯 > 计算推算,计数设备的制造及其应用技术 > 一种提升并行创建btree索引性能的方法和系统及设备与流程  >  正文

一种提升并行创建btree索引性能的方法和系统及设备与流程

  • 国知局
  • 2024-11-18 18:17:15

本发明涉及索引创建,尤其涉及一种提升并行创建btree索引性能的方法和系统及设备。

背景技术:

1、多路归并算法是一种用于处理大量数据的排序算法,它基于归并排序的思想,但扩展到了可以同时合并多个有序序列的情况。这种算法特别适用于处理大数据集,当数据集太大而无法一次性加载到内存中时,多路归并算法能够有效地进行排序和归并操作。opengauss数据库采用多路归并算法的思想实现并行创建btree索引,主要包括两个步骤,步骤一:并行扫描数据并排序,生成多路的排序段;步骤二:对多路排序段进行归并,生成索引数据,写入索引表。

2、在实际应用中,随着并行度的提高,步骤一生成的排序段个数会增加,步骤二进行多路归并的耗时也随之增加,并超过并行带来的性能提升,甚至出现性能劣化。

3、因此,如何提供一种并行创建索引的方法,在保持提高并行度带来的扫描、排序的性能增益的同时,减少最终归并阶段由于并行度增加带来的性能劣化,成为亟待解决的技术问题。

技术实现思路

1、有鉴于此,为了克服现有技术的不足,本发明旨在提供一种提升并行创建btree索引性能的方法和系统及设备。

2、根据本发明的第一方面,提供一种提升并行创建btree索引性能的方法,该方法包括:

3、采用并行子线程对数据进行并行扫描和排序,生成多路排序段;

4、当并行子线程结束数据的并行扫描和排序,通过主线程创建共享缓存,启动生产者线程;

5、通过启动的生产者线程对生成的多路排序段进行多路归并,将多路归并生成的有序数据写入共享缓存中;

6、通过主线程从共享缓存中读取有序数据,根据读取的有序数据创建索引元组,将创建的索引元组写入到索引表中。

7、优选地,本发明提升并行创建btree索引性能的方法中,采用并行子线程对数据进行并行扫描和排序,生成多路排序段,包括:采用并行子线程对数据进行并行扫描,通过对并行扫描获得的数据进行排序,生成多路排序段。

8、优选地,本发明提升并行创建btree索引性能的方法中,当并行子线程结束数据的并行扫描和排序,通过主线程创建共享缓存,启动生产者线程,包括:通过主线程监控并行子线程是否结束数据的并行扫描和排序,当监控到并行子线程结束数据的并行扫描和排序,通过主线程创建共享缓存,启动生产者线程,将共享缓存的地址引用传递给生产者线程。

9、优选地,本发明提升并行创建btree索引性能的方法中,通过启动的生产者线程对生成的多路排序段进行多路归并,将多路归并生成的有序数据写入共享缓存中,包括:当多路归并生成的有序数据超过共享缓存的缓存大小时,将超过共享缓存的缓存大小的有序数据以块为单位写入外存,对共享缓存设置外存使用标识。

10、优选地,本发明提升并行创建btree索引性能的方法中,通过主线程从共享缓存中读取有序数据,根据读取的有序数据创建索引元组,包括:当共享缓存中的有序数据已被主线程读取完成且共享缓存设置有外存使用标识,将外存中的有序数据以块为单位加载至共享缓存中,通过主线程从共享缓存中读取有序数据,根据读取的有序数据创建索引元组。

11、优选地,本发明提升并行创建btree索引性能的方法中,通过主线程从共享缓存中读取有序数据,根据读取的有序数据创建索引元组,包括:当共享缓存与外存中的有序数据已被主线程读取完成,等待生产者线程向共享缓存中继续写入有序数据,通过主线程从共享缓存中读取有序数据,根据读取的有序数据创建索引元组。

12、优选地,本发明提升并行创建btree索引性能的方法中,通过主线程从共享缓存中读取有序数据,根据读取的有序数据创建索引元组,还包括:当共享缓存与外存中的有序数据已被主线程读取完成,生产者线程不再向共享缓存中继续写入有序数据,通过主线程从共享缓存中读取有序数据,在根据读取的有序数据创建索引元组后,执行索引创建清理流程。

13、优选地,本发明提升并行创建btree索引性能的方法中,在根据读取的有序数据创建索引元组后,执行索引创建清理流程,包括:释放子并行线程资源、共享缓存资源、关闭底层存储并向上层应用发送索引已完成的通知。

14、根据本发明的第二方面,提供一种提升并行创建btree索引性能的系统,该系统包括提升服务端,该提升服务端用于:采用并行子线程对数据进行并行扫描,通过对扫描获得的数据进行排序,生成多路排序段;当并行子线程结束数据的并行扫描和排序,通过主线程创建共享缓存,启动生产者线程;通过启动的生产者线程对生成的多路排序端进行多路归并,将多路归并生成的有序数据写入共享缓存中;通过主线程从共享缓存中读取有序数据,根据读取的有序数据创建索引元组,将创建的索引元组写入到索引表中。

15、根据本发明的第三方面,提供一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现本发明第一方面所述的方法。

16、本发明的提升并行创建btree索引性能的方法和系统及设备,在数据库并行创建btree索引的最终归并阶段引入生产者-消费者机制,生产者和消费者使用不同的线程;生产者线程负责对并行生成的排序段进行多路归并,并将输出的有序数据写入一个共享缓存中,而消费者则从共享缓存中获取归并后的数据,并生成索引数据,写入索引表中。即将数据库并行创建索引的最终归并阶段,由原来单一线程完成改进为一个生产者-消费者的方式,将归并排序和生成索引数据并行起来以提升最终归并的性能。既能保持提高并行度带来的扫描、排序的性能增益,同时减少最终归并阶段由于并行度增加带来的性能劣化。

17、本发明提升并行创建btree索引性能的方法和系统适用于各类需要并行创建索引的数据库,比如opengauss数据库。根据工程实践,许多业务场景下并行创建索引的最终归并阶段,多路归并排序和生成索引数据的耗时达到1:2甚至1:1,而采用本实施例的方法,可以有效的提升并行创建索引的性能。

18、当将本发明的方法应用于opengauss数据库中时,将原并行创建索引的最终归并阶段,拆分为两个并行的任务,生产者负责原来的多路归并排序,消费者负责原来的生成索引数据并写入索引表,只需要实现生产者-消费者框架,大部分逻辑可以有效利用opengauss数据库中的已有逻辑,减少大量的开发工作。

技术特征:

1.一种提升并行创建btree索引性能的方法,其特征在于,所述方法包括:

2.根据权利要求1所述的提升并行创建btree索引性能的方法,其特征在于,采用并行子线程对数据进行并行扫描和排序,生成多路排序段,包括:采用并行子线程对数据进行并行扫描,通过对并行扫描获得的数据进行排序,生成多路排序段。

3.根据权利要求1所述的提升并行创建btree索引性能的方法,其特征在于,当并行子线程结束数据的并行扫描和排序,通过主线程创建共享缓存,启动生产者线程,包括:通过主线程监控并行子线程是否结束数据的并行扫描和排序,当监控到并行子线程结束数据的并行扫描和排序,通过主线程创建共享缓存,启动生产者线程,将共享缓存的地址引用传递给生产者线程。

4.根据权利要求1所述的提升并行创建btree索引性能的方法,其特征在于,通过启动的生产者线程对生成的多路排序段进行多路归并,将多路归并生成的有序数据写入共享缓存中,包括:当多路归并生成的有序数据超过共享缓存的缓存大小时,将超过共享缓存的缓存大小的有序数据以块为单位写入外存,对共享缓存设置外存使用标识。

5.根据权利要求1所述的提升并行创建btree索引性能的方法,其特征在于,通过主线程从共享缓存中读取有序数据,根据读取的有序数据创建索引元组,包括:当共享缓存中的有序数据已被主线程读取完成且共享缓存设置有外存使用标识,将外存中的有序数据以块为单位加载至共享缓存中,通过主线程从共享缓存中读取有序数据,根据读取的有序数据创建索引元组。

6.根据权利要求1所述的提升并行创建btree索引性能的方法,其特征在于,通过主线程从共享缓存中读取有序数据,根据读取的有序数据创建索引元组,包括:当共享缓存与外存中的有序数据已被主线程读取完成,等待生产者线程向共享缓存中继续写入有序数据,通过主线程从共享缓存中读取有序数据,根据读取的有序数据创建索引元组。

7.根据权利要求1所述的提升并行创建btree索引性能的方法,其特征在于,通过主线程从共享缓存中读取有序数据,根据读取的有序数据创建索引元组,还包括:当共享缓存与外存中的有序数据已被主线程读取完成,生产者线程不再向共享缓存中继续写入有序数据,通过主线程从共享缓存中读取有序数据,在根据读取的有序数据创建索引元组后,执行索引创建清理流程。

8.根据权利要求7所述的提升并行创建btree索引性能的方法,其特征在于,在根据读取的有序数据创建索引元组后,执行索引创建清理流程,包括:释放子并行线程资源、共享缓存资源、关闭底层存储并向上层应用发送索引已完成的通知。

9.一种提升并行创建btree索引性能的系统,其特征在于,所述系统包括提升服务端,所述提升服务端用于:采用并行子线程对数据进行并行扫描,通过对扫描获得的数据进行排序,生成多路排序段;当并行子线程结束数据的并行扫描和排序,通过主线程创建共享缓存,启动生产者线程;通过启动的生产者线程对生成的多路排序端进行多路归并,将多路归并生成的有序数据写入共享缓存中;通过主线程从共享缓存中读取有序数据,根据读取的有序数据创建索引元组,将创建的索引元组写入到索引表中。

10.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求1-8中任一项所述方法的步骤。

技术总结本发明涉及索引创建技术领域,提供一种提升并行创建btree索引性能的方法和系统及设备,包括:采用并行子线程对数据进行并行扫描和排序,生成多路排序段;当并行子线程结束数据的并行扫描和排序,通过主线程创建共享缓存,启动生产者线程;通过启动的生产者线程对生成的多路排序段进行多路归并,将多路归并生成的有序数据写入共享缓存中;通过主线程从共享缓存中读取有序数据,根据读取的有序数据创建索引元组,将创建的索引元组写入到索引表中。本发明的提升并行创建btree索引性能的方法和系统及设备,能保持提高并行度带来的扫描、排序的性能增益,同时减少最终归并阶段由于并行度增加带来的性能劣化。技术研发人员:那海涛,何小栋受保护的技术使用者:北京海量数据技术股份有限公司技术研发日:技术公布日:2024/11/14

本文地址:https://www.jishuxx.com/zhuanli/20241118/328052.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。