本申请涉及数据库,特别是涉及一种数据库并行扫描方法、装置、电子设备及存储介质。
背景技术:
1、在数据库的日常应用中,对于数据量较大的场景,通常采用并行扫描的方法对数据进行扫描读取以加快速度。相关技术在对数据库的并行扫描过程中,通常是将数据库的数据页面进行分组,由多个线程同时执行扫描任务,每个线程负责扫描其中一组数据页面。虽然通过了并行执行可以提升数据库扫描查询效率,但是并没有充分利用数据库的索引,效率提升效果有限。
技术实现思路
1、本申请旨在至少解决现有技术中存在的技术问题之一。为此,本申请实施例提供了一种数据库并行扫描方法、装置、电子设备及存储介质,能够有效提升数据库的效率。
2、第一方面,本申请实施例提供了一种数据库并行扫描方法,包括:
3、获取数据库的数据索引树,并创建多个扫描线程;所述数据索引树包括多个索引页面,所述索引页面按照页面编号有序存储,第一个所述扫描线程作为初始线程;
4、利用所述初始线程获取同步锁,从所述索引页面中选取初始索引页面并确定预设数量,并对所述初始索引页面进行数据扫描,在进行数据扫描时,所述初始线程释放所述同步锁;
5、基于所述初始索引页面和所述页面编号有序选取所述预设数量的所述索引页面作为目标索引页面;
6、依次将所述目标索引页面的目标页面编号写入预设的共享参数中,在每次写入后,利用所述同步锁唤醒所述扫描线程,利用所述扫描线程对所述目标索引页面进行数据扫描。
7、在本申请的一些实施例中,所述数据库还包括至少一个数据页面,所述数据页面包括至少一个数据元组,所述索引页面包括至少一个索引元组,所述索引元组包括用于指示所述数据页面的第一位置的数据页码和用于索引所述数据元组的第二位置的数据序号;数据扫描的过程包括以下步骤:
8、从所述索引页面的第一个所述索引元组开始扫描,利用所述数据页码查找所述第一位置的所述数据页面作为目标数据页面;
9、利用所述数据序号在所述目标数据页面中查找所述第二位置的数据元组;
10、依次对所述索引页面的所有所述索引元组进行扫描,得到所述索引元组对应的所述数据元组。
11、在本申请的一些实施例中,所述基于所述初始索引页面和所述页面编号有序选取所述预设数量的所述索引页面作为目标索引页面,包括:
12、获取所述初始索引页面的初始页面编号;
13、依次增大所述初始页面编号,选取预设数量的所述目标页面编号,将所述目标页面编号的所述索引页面作为所述目标索引页面。
14、在本申请的一些实施例中,所述利用所述同步锁唤醒所述扫描线程,利用所述扫描线程对所述目标索引页面进行数据扫描,还包括:
15、按照顺序选取所述扫描线程作为目标线程,利用所述目标线程获取所述同步锁;
16、从所述共享参数中获取所述目标页面编号,基于所述目标页面编号选取所述目标索引页面;
17、利用所述目标线程对所述目标索引页面进行数据扫描,并同时释放所述同步锁,将所述共享参数指向下一个所述目标页面编号。
18、在本申请的一些实施例中,所述从所述索引页面中选取初始索引页面并确定预设数量,包括:
19、根据过滤初始值在所述索引页面中进行筛选,得到所述初始索引页面;
20、根据过滤结束值确定结束索引页面,并根据所述结束索引页面与所述初始索引页面得到所述预设数量。
21、在本申请的一些实施例中,所述方法还包括:
22、当所述扫描线程访问所述结束索引页面时,生成扫描结束状态;
23、将所述扫描结束状态广播至每个所述扫描线程,在所述扫描线程扫描完对应的所述索引页面后,根据所述扫描结束状态终止所述扫描线程。
24、在本申请的一些实施例中,所述数据索引树包括多个叶子节点;所述方法还包括:
25、针对每个所述索引页面,获取其相邻的所述索引页面的页面编号,得到相邻页面编号;
26、将所述索引页面和所述相邻页面编号作为节点元素,按照所述页面编号的顺序依次将所述节点元素存入所述叶子节点,得到所述数据索引树。
27、第二方面,本申请实施例还提供了一种数据库并行扫描装置,应用如本申请第一方面实施例所述的数据库并行扫描方法,包括:
28、获取模块,用于获取数据库的数据索引树,并创建多个扫描线程;所述数据索引树包括多个索引页面,所述索引页面按照页面编号有序存储,第一个所述扫描线程作为初始线程;
29、第一扫描模块,用于利用所述初始线程获取同步锁,从所述索引页面中选取初始索引页面并确定预设数量,并对所述初始索引页面进行数据扫描,在进行数据扫描时,所述初始线程释放所述同步锁;
30、选取模块,用于基于所述初始索引页面和所述页面编号有序选取所述预设数量的所述索引页面作为目标索引页面;
31、第二扫描模块,用于依次将所述目标索引页面的目标页面编号写入预设的共享参数中,在每次写入后,利用所述同步锁唤醒所述扫描线程,利用所述扫描线程对所述目标索引页面进行数据扫描。
32、第三方面,本申请实施例还提供了一种电子设备,包括存储器、处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如本申请第一方面实施例所述的数据库并行扫描方法。
33、第四方面,本申请实施例还提供了一种计算机可读存储介质,所述存储介质存储有程序,所述程序被处理器执行实现如本申请第一方面实施例所述的数据库并行扫描方法。
34、本申请实施例至少包括以下有益效果:
35、本申请实施例提供了一种数据库并行扫描方法、装置、电子设备及存储介质。方法中首先获取数据库的数据索引树并创建多个扫描线程,数据索引树包括多个索引页面,索引页面按照页面编号有序存储,第一个扫描线程作为初始线程。利用初始线程获取同步锁,从索引页面中选取初始索引页面并确定预设数量,并对初始索引页面进行数据扫描,在进行数据扫描时,初始线程释放同步锁。然后基于初始索引页面的页面编号有序选取预设数量的索引页面作为目标索引页面,依次将目标索引页面的目标页面编号写入预设的共享参数中。在每次写入后,利用同步锁唤醒扫描线程,利用扫描线程对目标索引页面进行数据扫描。由此通过设置同步锁和共享参数,让不同的扫描线程有序读取索引页面并进行数据扫描,结合了并行扫描和索引扫描,有效提升数据库扫描查询的效率。
36、本申请的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
1.一种数据库并行扫描方法,其特征在于,包括:
2.根据权利要求1所述的数据库并行扫描方法,其特征在于,所述数据库还包括至少一个数据页面,所述数据页面包括至少一个数据元组,所述索引页面包括至少一个索引元组,所述索引元组包括用于指示所述数据页面的第一位置的数据页码和用于索引所述数据元组的第二位置的数据序号;数据扫描的过程包括以下步骤:
3.根据权利要求1所述的数据库并行扫描方法,其特征在于,所述基于所述初始索引页面和所述页面编号有序选取所述预设数量的所述索引页面作为目标索引页面,包括:
4.根据权利要求3所述的数据库并行扫描方法,其特征在于,所述利用所述同步锁唤醒所述扫描线程,利用所述扫描线程对所述目标索引页面进行数据扫描,还包括:
5.根据权利要求2所述的数据库并行扫描方法,其特征在于,所述从所述索引页面中选取初始索引页面并确定预设数量,包括:
6.根据权利要求5所述的数据库并行扫描方法,其特征在于,所述方法还包括:
7.根据权利要求1至6中任一项所述的数据库并行扫描方法,其特征在于,所述数据索引树包括多个叶子节点;所述方法还包括:
8.一种数据库并行扫描装置,其特征在于,应用如权利要求1至7中任一项所述的数据库并行扫描方法,包括:
9.一种电子设备,其特征在于,包括存储器、处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的数据库并行扫描方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质存储有程序,所述程序被处理器执行实现如权利要求1至7中任一项所述的数据库并行扫描方法。