数据库的查询方法和装置、计算机设备、存储介质制造方法及图纸

技术编号:38282333 阅读:16 留言:0更新日期:2023-07-27 10:30
本申请实施例提供了一种数据库的查询方法和装置、计算机设备、存储介质,属于数据库技术领域。该方法包括:根据数据查询请求确定目标数据列和初始预聚合哈希表;将第一分组数据写入初始预聚合哈希表得到第一预聚合哈希表;将第一分组数据写入预聚合缓存中;根据关键字数据和第二分组数据进行关键字匹配得到匹配结果;对第一预聚合哈希表的存储空间和预设哈希表空间阈值进行空间判断,根据预设淘汰算法对初始缓存数据进行数据选择;根据选择数据将第二分组数据写入第一预聚合哈希表得到第二预聚合哈希表;当第二分组数据是所述结束标记,对第二预聚合哈希表的数据和第三分组数据合并得到目标查询表。本申请实施例能够提高对数据库的查询效率。数据库的查询效率。数据库的查询效率。

【技术实现步骤摘要】
数据库的查询方法和装置、计算机设备、存储介质


[0001]本申请涉及数据库
,尤其涉及一种数据库的查询方法和装置、计算机设备、存储介质。

技术介绍

[0002]聚合是数据库中常用的查询操作,且聚合操作通常是根据group by条件将输入的表数据划分为不同的分组,并根据聚合函数计算出每个分组的单个值以得到查询结果。在数据库的具体实现中,相关技术通常采用哈希表在缓存查询时进行数据存储,由于进行查询的数据量比较大时,哈希表的大小会超过可用内存的限制。为了避免内存超过限制且提高执行效率,相关技术通过将聚合下推,即通过分布式聚合方法形成两阶段聚合。具体地,在读取数据后,会先做一次本地预聚合,并将预聚合的哈希表中的结果分发到最终聚合阶段,以保证相同的分组分发到相同的聚合工作线程里。在最终聚合阶段进行合并即可得到最终结果。
[0003]然而,当分组数过多时,预聚合阶段也可能会发生落盘,且落盘会带来较大的性能影响。为了解决该问题,相关技术所采用的技术方法包括:当发现哈希表需要内存过多时,会返回哈希表内的所有行并释放内存,然后重新建哈希表;或者,当哈希表大小达到限制时,对于后续的数据,先在哈希表中进行查找,并同时保留频次较高的分组。但是,第一种方法容易造成过多的行数据被传输给上层节点处理;而第二种方法容易使之前保留的高频数据在后续数据未出现以造成对哈希表空间的浪费。因此,两种方式对数据库的缓存查询的执行效率较低。

技术实现思路

[0004]本申请实施例的主要目的在于提出了一种数据库的缓存查询方法和装置、计算机设备、存储介质,能够提高对数据库的聚合查询效率。
[0005]为实现上述目的,本申请实施例的第一方面提出了一种数据库的查询方法,所述方法包括:根据接收的数据查询请求确定目标数据列和初始预聚合哈希表,所述目标数据列包括第一分组数据、第二分组数据和预设的结束标记,所述第二分组数据的存储时间是所述第一分组数据的存储时间之后的下一个数据存储时间;根据所述初始预聚合哈希表的存储空间和预设哈希表空间阈值将所述第一分组数据写入所述初始预聚合哈希表,得到第一预聚合哈希表;将所述第一分组数据写入预聚合缓存中,更新所述预聚合缓存中存储的初始缓存数据;根据所述第一预聚合哈希表中存储的关键字数据和所述第二分组数据进行关键字匹配,得到第一匹配结果;根据所述第一匹配结果对所述第一预聚合哈希表的存储空间和所述预设哈希表
空间阈值进行空间判断,并根据空间判断的结果和预设淘汰算法对所述初始缓存数据进行数据选择,确定第三分组数据;根据所述第一匹配结果和所述第三分组数据将所述第二分组数据写入所述第一预聚合哈希表,得到第二预聚合哈希表,并将所述第二分组数据写入更新后的所述预聚合缓存,更新所述初始缓存数据;当所述第二分组数据是所述结束标记,对所述第二预聚合哈希表的数据和所述第三分组数据进行数据合并,得到目标查询表。
[0006]在一些实施例中,所述根据所述初始预聚合哈希表的存储空间和预设哈希表空间阈值将所述第一分组数据写入所述初始预聚合哈希表,得到第一预聚合哈希表,包括:当所述初始预聚合哈希表的存储空间小于所述预设哈希表空间阈值,将所述第一分组数据写入所述初始预聚合哈希表,得到所述第一预聚合哈希表;或者,当所述初始预聚合哈希表的存储空间大于或等于所述预设哈希表空间阈值,根据所述预设淘汰算法对所述初始缓存数据进行数据选择,得到第四分组数据;根据所述第四分组数据将所述第一分组数据写入所述初始预聚合哈希表,得到所述第一预聚合哈希表。
[0007]在一些实施例中,所述根据所述第一匹配结果和所述第三分组数据将所述第二分组数据写入所述第一预聚合哈希表,得到第二预聚合哈希表,包括:当所述第一预聚合哈希表中包含和所述第二分组数据匹配的所述关键字数据,获取与所述第二分组数据匹配的第一关键字和所述第一关键字的第一键值;根据所述第一预聚合哈希表的预设哈希函数、所述第一键值和所述第二分组数据进行函数计算,得到第二键值;根据所述第二键值更新所述第一预聚合哈希表,并将更新后的所述第一预聚合哈希表作为所述第二预聚合哈希表。
[0008]在一些实施例中,所述根据所述第一匹配结果和所述第三分组数据将所述第二分组数据写入所述第一预聚合哈希表,得到第二预聚合哈希表,还包括:当所述第一预聚合哈希表中不包含和所述第二分组数据匹配的所述关键字数据,确定在所述第一预聚合哈希表中添加所述第二分组数据对应的第二关键字;根据所述预设哈希函数和所述第二分组数据进行函数计算,得到第三键值;从所述第一预聚合哈希表中删除所述第三分组数据,更新所述第一预聚合哈希表;根据所述第二关键字、所述第三键值和更新后的所述第一预聚合哈希表进行哈希表合并,得到所述第二预聚合哈希表。
[0009]在一些实施例中,所述预聚合缓存包括淘汰存储区域、保护存储区域和窗口存储区域;所述将所述第一分组数据写入预聚合缓存中,包括:当所述淘汰存储区域中存在与所述第一分组数据相同的所述初始缓存数据,将所述第一分组数据写入所述保护存储区域;从所述淘汰存储区域中删除与所述第一分组数据相同的所述初始缓存数据;
或者,当所述保护存储区域或所述窗口存储区域中存在与所述第一分组数据相同的所述初始缓存数据,更新与所述第一分组数据相同的所述初始缓存数据的访问频率数据;或者,当所述预聚合缓存中不存在与所述第一分组数据相同的所述初始缓存数据,将所述第一分组数据写入所述窗口存储区域。
[0010]在一些实施例中,所述淘汰存储区域用于存储待淘汰缓存数据,所述窗口存储区域用于存储窗口缓存数据;所述根据空间判断的结果和预设淘汰算法对所述初始缓存数据进行数据选择,确定第三分组数据,包括:当所述第一预聚合哈希表的存储空间大于或等于所述预设哈希表空间阈值,根据所述待淘汰缓存数据的访问频率数据确定第一判断数据;根据所述窗口缓存数据的访问频率数据确定第二判断数据;对所述第一判断数据和所述第二判断数据进行频率数据比较,并根据频率数据比较的结果确定所述第三分组数据;从所述预聚合缓存中删除所述第三分组数据。
[0011]在一些实施例中,在所述当所述第二分组数据是所述结束标记,对所述第二预聚合哈希表的数据和所述第三分组数据进行数据合并,得到目标查询表之前,所述方法还包括:当所述第二分组数据不是所述结束标记,将所述第二分组数据作为新的第一分组数据,根据新的所述第一分组数据确定第五分组数据,所述第五分组数据的存储时间是新的所述第一分组数据的存储时间之后的下一个数据存储时间;根据所述第二预聚合哈希表中存储的关键字数据和所述第五分组数据进行关键字匹配,得到第二匹配结果;根据所述第二匹配结果对所述预设哈希表空间阈值和所述第二预聚合哈希表的存储空间进行空间判断,并根据空间判断的结果和所述预设淘汰算法对更新的所述预聚合缓存中的所述初始缓存数据进行数据选择,确定第六分组数据;根据所述第二匹配结果和所述第六分组数据将所述第五分组数据写入所述第二预聚合哈希表,得到第三预聚合哈希表,并将所述第五分组数据写入更新后的所述预聚合缓存,更新所述初始缓存数据;当所述第五分本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据库的查询方法,其特征在于,所述方法包括:根据接收的数据查询请求确定目标数据列和初始预聚合哈希表,所述目标数据列包括第一分组数据、第二分组数据和预设的结束标记,所述第二分组数据的存储时间是所述第一分组数据的存储时间之后的下一个数据存储时间;根据所述初始预聚合哈希表的存储空间和预设哈希表空间阈值将所述第一分组数据写入所述初始预聚合哈希表,得到第一预聚合哈希表;将所述第一分组数据写入预聚合缓存中,更新所述预聚合缓存中存储的初始缓存数据;根据所述第一预聚合哈希表中存储的关键字数据和所述第二分组数据进行关键字匹配,得到第一匹配结果;根据所述第一匹配结果对所述第一预聚合哈希表的存储空间和所述预设哈希表空间阈值进行空间判断,并根据空间判断的结果和预设淘汰算法对所述初始缓存数据进行数据选择,确定第三分组数据;根据所述第一匹配结果和所述第三分组数据将所述第二分组数据写入所述第一预聚合哈希表,得到第二预聚合哈希表,并将所述第二分组数据写入更新后的所述预聚合缓存,更新所述初始缓存数据;当所述第二分组数据是所述结束标记,对所述第二预聚合哈希表的数据和所述第三分组数据进行数据合并,得到目标查询表。2.根据权利要求1所述的方法,其特征在于,所述根据所述初始预聚合哈希表的存储空间和预设哈希表空间阈值将所述第一分组数据写入所述初始预聚合哈希表,得到第一预聚合哈希表,包括:当所述初始预聚合哈希表的存储空间小于所述预设哈希表空间阈值,将所述第一分组数据写入所述初始预聚合哈希表,得到所述第一预聚合哈希表;或者,当所述初始预聚合哈希表的存储空间大于或等于所述预设哈希表空间阈值,根据所述预设淘汰算法对所述初始缓存数据进行数据选择,得到第四分组数据;根据所述第四分组数据将所述第一分组数据写入所述初始预聚合哈希表,得到所述第一预聚合哈希表。3.根据权利要求1所述的方法,其特征在于,所述根据所述第一匹配结果和所述第三分组数据将所述第二分组数据写入所述第一预聚合哈希表,得到第二预聚合哈希表,包括:当所述第一预聚合哈希表中包含和所述第二分组数据匹配的所述关键字数据,获取与所述第二分组数据匹配的第一关键字和所述第一关键字的第一键值;根据所述第一预聚合哈希表的预设哈希函数、所述第一键值和所述第二分组数据进行函数计算,得到第二键值;根据所述第二键值更新所述第一预聚合哈希表,并将更新后的所述第一预聚合哈希表作为所述第二预聚合哈希表。4.根据权利要求3所述的方法,其特征在于,所述根据所述第一匹配结果和所述第三分组数据将所述第二分组数据写入所述第一预聚合哈希表,得到第二预聚合哈希表,还包括:当所述第一预聚合哈希表中不包含和所述第二分组数据匹配的所述关键字数据,确定
在所述第一预聚合哈希表中添加所述第二分组数据对应的第二关键字;根据所述预设哈希函数和所述第二分组数据进行函数计算,得到第三键值;从所述第一预聚合哈希表中删除所述第三分组数据,更新所述第一预聚合哈希表;根据所述第二关键字、所述第三键值和更新后的所述第一预聚合哈希表进行哈希表合并,得到所述第二预聚合哈希表。5.根据权利要求1至4任一项所述的方法,其特征在于,所述预聚合缓存包括淘汰存储区域、保护存储区域和窗口存储区域;所述将所述第一分组数据写入预聚合缓存中,包括:当所述淘汰存储区域中存在与所述第一分组数据相同的所述初始缓存数据,将所述第一分组数据写入所述保护存储区域;从所述淘汰存储区域中删除与所述第一分组数据相同的所述初始缓存数据;或者,当所述保护存储区域或所述窗口存储区域中存在与所述第一分组数据相同的所述初始缓存数据,更新与所述第一分组数据相同的所述初始缓存数据的访问频率数据;或者,当所述预聚合缓存中不存在与所述第一分组数...

【专利技术属性】
技术研发人员:谢海滨
申请(专利权)人:本原数据北京信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1