System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及数据库,尤其涉及一种数据预读取方法、数据查询方法、装置、设备及介质。
技术介绍
1、在堆表(heap table)中,元组(tuple)以堆的方式管理,按照简单的行存储,无需考虑顺序,因此数据插入的速度较快,可以提高数据库的性能,受到了广泛地应用。
2、在从堆表中访问元组时,由于堆表的无序特性,导致数据访问的成本较高。通常为同步访问,主要流程为:获取元组标识(tuple identifier,tid),通过索引扫描得到堆表页面,从堆表页面中得到tid对应的元组,等待下一元组标识。
3、上述数据访问方式,访问效率低下,无法充分使用存储系统的带宽。
技术实现思路
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、所述存储器存储计算机执行指令;
37、所述处理器执行所述存储器存储的计算机执行指令,以实现本申请第一方面或第二方面提供的方法。
38、第六方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现本申请第一方面或第二方面提供的方法。
39、第七方面,本申请提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现本申请第一方面或第二方面提供的方法。
40、本申请提供的数据预读取方法、数据查询方法、装置、设备及介质,针对采用索引树进行索引扫描堆表的情况,当索引树存在数据查询语句的元组标识命中的叶子节点时,除了读取该叶子节点对应的堆表页面,从而得到元组标识对应的元组这一正常读取流程外,还提供了通过采用与数据查询语句中扫描算子匹配的预读取策略,预读取并缓存除命中的叶子节点外其他叶子节点对应的堆表页面,从而提前进行堆表页面的读取和缓存,以便于后续查询其他叶子节点对应的堆表页面的元组时,直接从缓存中读取该元组,提高数据查询的速度;同时,通过预读取多个叶子节点对应的堆表页面,实现了异步读取,提高了访问的并发性,充分使用了存储系统的带宽。
本文档来自技高网...【技术保护点】
1.一种数据预读取方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,采用与所述扫描算子匹配的预读取策略,预读取并缓存除所述命中的叶子节点外其他叶子节点对应的堆表页面,包括:
3.根据权利要求2所述的方法,其特征在于,预读取的堆表页面缓存于预读取内存中,所述方法还包括:
4.根据权利要求1所述的方法,其特征在于,采用与所述扫描算子匹配的预读取策略,预读取并缓存除所述命中的叶子节点外其他叶子节点对应的堆表页面,包括:
5.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
6.一种数据查询方法,其特征在于,包括:
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
8.一种数据预读取装置,其特征在于,包括:
9.一种数据查询装置,其特征在于,包括:
10.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机
12.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7中任一项所述的方法。
...【技术特征摘要】
1.一种数据预读取方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,采用与所述扫描算子匹配的预读取策略,预读取并缓存除所述命中的叶子节点外其他叶子节点对应的堆表页面,包括:
3.根据权利要求2所述的方法,其特征在于,预读取的堆表页面缓存于预读取内存中,所述方法还包括:
4.根据权利要求1所述的方法,其特征在于,采用与所述扫描算子匹配的预读取策略,预读取并缓存除所述命中的叶子节点外其他叶子节点对应的堆表页面,包括:
5.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
6.一种数据查询方法,其特征在...
【专利技术属性】
技术研发人员:林文博,杨尚,孙文奇,
申请(专利权)人:北京人大金仓信息技术股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。