技术新讯 > 计算推算,计数设备的制造及其应用技术 > 数据查询方法、系统、设备集群、介质以及程序产品与流程  >  正文

数据查询方法、系统、设备集群、介质以及程序产品与流程

  • 国知局
  • 2024-07-31 23:03:32

本公开总体上涉及计算机,更特别地涉及一种数据查询方法、数据查询系统、计算设备集群、计算机可读存储介质以及计算机程序产品。

背景技术:

1、随着大数据的快速发展和计算能力的显著提升,数据库中的数据更新数量更为庞大。在数据库领域中,为了更准确地查询到目标数据,通常采用优化器来生成最优的执行计划,以基于最优的执行计划,对于目标数据进行查询。目前,优化器主要包括两种类型——基于规则的优化器(rbo,rule based optimizer)和基于成本的优化器(cbo,cost basedoptimizer)。在基于规则的优化器中,数据库基于预先编码的多组内置规则,选择最优的执行计划,例如优先使用唯一约束或主键来定位存储单元、优先使用哈希索引等。在基于成本的优化器中,数据库通过针对目标数据的可能的全部执行计划进行成本估算,基于最小的估算成本,选择最优的执行计划,例如成本估算可以考虑计算设备为目标数据进行计算处理的开销和输入输出设备为目标数据进行通信处理的开销。

技术实现思路

1、根据本公开的一些实施例,提供了一种数据查询方法、数据查询系统、计算设备集群、计算机可读存储介质以及计算机程序产品。

2、在本公开的第一方面,提供了一种数据查询方法。所述方法由包括多个计算节点的系统执行,所述系统包括第一计算节点和第二计算节点,所述第一计算节点包括第一共享内存,所述第二计算节点包括第二共享内存。所述方法包括:所述第一计算节点响应于接收到针对目标数据的第一查询请求,收集与目标数据相关的统计信息;所述第一计算节点将收集的所述统计信息作为第一统计信息存储于所述第一共享内存中,以更新所述第一共享内存中的全局统计信息;以及将所述第一统计信息发送给所述第二计算节点,以由所述第二计算节点存储于所述第二共享内存中来更新所述第二共享内存中的全局统计信息,其中所述全局统计信息被用于针对所述系统的查询请求查询统计信息。根据本公开的实施例,由于在特定计算节点上针对目标数据的查询所收集的统计信息能够共享给其他计算节点,从而能够在保证统计信息的时效性的同时,避免大量的重复收集而显著地减少了计算开销。

3、在一些实施例中,收集与目标数据相关的统计信息还包括:所述第一计算节点响应于接收到针对目标数据的第一查询请求,确定与所述目标数据相关的数据表的语句执行计数是否超过预定阈值;所述第一计算节点响应于确定针对所述语句执行计数超过所述预定阈值,收集所述第一统计信息。在一些实施例中,所述第一计算节点基于所述第一统计信息,生成目标执行计划;以及所述第一计算节点执行以下中的至少一项:提示针对所述目标数据新收集了所述第一统计信息;提示所述目标执行计划是基于针对所述目标数据新收集的所述第一统计信息生成的;提示所述目标执行计划中包括的与所述目标数据相关的第一统计信息的条数;以及提示所述目标执行计划中针对所述目标数据新收集的统计信息的条数。由此,能够获知计算节点是否针对查询请求中的目标数据,收集了最新的统计信息及其具体内容。

4、在一些实施例中,所述方法还包括:所述第一计算节点针对所述目标数据,基于所述目标执行计划,生成执行结果;所述第一计算节点响应于生成所述执行结果,针对所述第一查询请求,执行事务提交;所述第一计算节点响应于执行所述事务提交,基于所述第一统计信息在所述第一共享内存中的指针更新所述第一共享内存中的全局统计信息;所述第一计算节点响应于执行所述事务提交,向所述第二计算节点发送关于所述事务提交的指示;以及所述第二计算节点响应于从所述第一计算节点接收到关于所述事务提交的指示,更新所述第二共享内存中的全局统计信息。在一些实施例中,所述方法还包括:所述第一计算节点响应于接收到针对所述目标数据的第二查询请求,确定与所述目标数据相关的数据表的语句执行计数是否超过所述预定阈值;所述第一计算节点响应于所述语句执行计数未超过所述预定阈值,查询所述第一统计信息;以及所述第一计算节点基于查询到的所述第一统计信息,生成目标执行计划,其中针对所述第二查询请求生成的目标执行计划与针对所述第一查询请求生成的目标执行计划实质上相同。由此,在当前计算节点已经基于该计算节点收集的关于目标数据的统计信息更新了全局统计信息之后,再又接收到关于目标数据的另一查询请求的情形下,如果关于目标数据的统计信息时效性较好,则当前计算节点可以无需再行收集统计信息,而能够直接使用最新的统计信息,从而有效地提高了数据库的查询效率。

5、在一些实施例中,查询第一统计信息还包括:所述第一计算节点从所述第一本地内存中查询所述第一统计信息;所述第一计算节点响应于从所述第一本地内存中未查询到所述第一统计信息,从第一后台作业内存中查询所述第一统计信息;所述第一计算节点响应于从第二后台作业内存中未查询到所述第一统计信息,从所述第一共享内存中查询所述第一统计信息,例如从所述第一共享内存的全局统计信息中查询所述第一统计信息;以及所述第一计算节点响应于从所述第一共享内存中未查询到所述第一统计信息,从第二后台作业内存中查询所述第一统计信息。在一些实施例中,查询第一统计信息还包括:所述第一计算节点从所述第一本地内存中查询所述第一统计信息;所述第一计算节点响应于从所述第一本地内存中未查询到所述第一统计信息,从所述第一共享内存中查询所述第一统计信息,例如从所述第一共享内存的全局统计信息中查询所述第一统计信息;以及所述第一计算节点响应于从所述第一共享内存中未查询到所述第一统计信息,从第二后台作业内存中查询所述第一统计信息。由此,能够分层的查询统计信息,优先地且快速地查询到时效性最新的统计信息,从而提高数据库的查询效率。

6、在一些实施例中,所述第一计算节点还执行第一后台作业线程,所述方法还包括:所述第一计算节点针对所述第一后台作业进程,分配第一后台作业内存;以及在所述第一后台作业内存中,存储由所述第一计算节点收集的统计信息在所述第一共享内存中的指针和所述第一计算节点从所述多个计算节点中的其他计算节点接收的统计信息在所述第一共享内存中的指针。由此,通过第一后台作业进行将各个计算节点的统计信息存放到被分配的第一后台作业内存中的无锁队列中,不会对于当前查询进程造成影响,从而避免了对于第一计算节点的整体性能的影响。

7、在一些实施例中,所述第一计算节点还执行第二后台作业线程,所述方法还包括:所述第一计算节点针对所述第二后台作业进程,分配所述第二后台作业内存;所述第二后台作业进程以预定时间检查针对所述统计信息系统表中的各个数据表的语句执行计数是否超过第二预定阈值;针对所述统计信息系统表中语句执行计数超过所述第二预定阈值的数据表,收集与该数据表相关的统计信息;以及基于收集的与该数据表相关的所述统计信息,更新统计信息系统表,其中统计信息系统表存储于所述第二后台作业内存中。由此,通过第二后台作业以轮询的方式检查数据表的统计信息,能够避免由于相关数据长时间未被查询而导致的时效性较差。

8、在一些实施例中,所述方法还包括:所述第一计算节点响应于接收到针对目标数据的第一查询请求确定所述语句执行计数未超过预定阈值,查询作为针对所述目标数据的统计信息的第二统计信息;所述第一计算节点基于查询到的所述第二统计信息,生成目标执行计划;所述第一计算节点针对所述目标数据,基于所述目标执行计划,生成执行结果;以及所述第一计算节点响应于生成所述执行结果,针对所述第一查询请求,执行事务提交。由此,能够在统计信息未过时的情况下,直接使用已有的统计信息生成执行计划,从而提高了数据库的查询效率。

9、在一些实施例中,所述语句执行计数指示针对与目标数据相关的数据表执行插入语句、删除语句、修改语句之后发生变化的记录的条数。在一些实施例中,在所述第一共享内存中还存储所述第一统计信息在所述第一共享内存中的指针,其中更新所述第一共享内存中的全局统计信息包括:在所述第一共享内存中的所述全局统计信息中删除与所述目标数据相关的统计信息;以及将所述第一统计信息在所述第一共享内存中的指针添加到所述第一共享内存中的所述全局统计信息中。由此,由于单个节点收集到的具有时效性的统计信息被共享给其他计算节点,并且存储于各个计算节点中的对于所有进程可见的共享内存中,通过仅将统计信息在共享内存中的指针提供给各个进程,就能够实现整个数据库系统的统计信息的最新同步,保证了整个数据库系统的查询计划的一致性,减少了性能抖动的发生。

10、在一些实施例中,所述方法还包括:所述第一计算节点基于所述第一查询请求,创建第一进程;所述第一计算节点针对所述第一进程,分配第一本地内存;以及所述第一计算节点在所述第一本地内存中存储所述统计信息在所述第一共享内存中的指针。由此,在当前查询进程的本地内存中,仅存放统计信息在共享内存中的指针,就能够实现所需的操作,避免了统计信息在当前查询进程结束时被清除的情形。

11、在一些实施例中,所述方法还包括:所述第二计算节点响应于接收到从所述第一计算节点发送的所述第一统计信息,将所述第一统计信息存储于所述第二共享内存中;以及所述第二计算节点基于所述第一统计信息在所述第二共享内存中的指针,更新所述第二共享内存中的全局统计信息。在一些实施例中,所述方法还包括:所述第二计算节点响应于接收到从所述第一计算节点发送的所述第一统计信息,创建第二进程;所述第二计算节点针对所述第二进程,分配第二本地内存;所述第二计算节点在所述第二共享内存中存储从所述第一计算节点发送的所述第一统计信息和所述第一统计信息在所述第二共享内存中的指针;以及所述第二计算节点在所述第二本地内存中存储从所述第一计算节点发送的所述第一统计信息在所述第二共享内存中的指针。在一些实施例中,所述方法还包括:所述第二计算节点从所述第一计算节点接收关于事务提交的指示;所述第二计算节点在所述第二共享内存中的所述全局统计信息中删除与所述目标数据相关的统计信息;以及所述第二计算节点将所述统计信息在所述第二共享内存中的指针添加到所述第二共享内存中的所述全局统计信息中。由此,单个计算节点可以将从其他计算节点共享的具有时效性的统计信息存储于该计算节点的对于所有进程可见的共享内存中,从而无需该计算节点自身收集统计信息,就能够获取到最新的统计信息以用于后续的查询处理。由此,能够实现整个数据库系统的统计信息的最新同步,保证了整个数据库系统的查询计划的一致性,减少了性能抖动的发生。

12、在一些实施例中,所述方法还包括:所述第二计算节点响应于接收到针对所述目标数据的第三查询请求,确定与所述目标数据相关的数据表的语句执行计数是否超过所述预定阈值;所述第二计算节点响应于确定所述语句执行计数未超过预定阈值,查询从所述第一计算节点接收的所述第一统计信息;以及基于查询到的所述第一统计信息,生成针对所述第三查询请求的目标执行计划,其中针对所述第二查询请求生成的目标执行计划与针对所述第一查询请求生成的目标执行计划实质上相同。由此,在当前计算节点已经基于该计算节点从其他计算节点共享得到的关于目标数据的统计信息更新了全局统计信息之后,再又接收到关于目标数据的另一查询请求的情形下,如果关于目标数据的统计信息时效性较好,则当前计算节点可以无需再行收集统计信息,而能够直接使用最新的统计信息,从而有效地提高了数据库的查询效率。

13、在本公开的第二方面,提供了一种数据查询系统。所述数据查询系统包括多个计算节点,所述多个计算节点包括第一计算节点和第二计算节点,所述第一计算节点包括第一共享内存,所述第二计算节点包括第二共享内存,并且所述数据查询系统包括数据查询装置。所述数据查询装置包括:信息收集模块,用于所述第一计算节点响应于接收到针对目标数据的第一查询请求,收集与目标数据相关的统计信息;信息存储模块,用于所述第一计算节点将收集的所述统计信息作为第一统计信息存储于所述第一共享内存中,以更新所述第一共享内存中的全局统计信息;以及信息发送模块,用于将所述第一统计信息发送给所述第二计算节点,以由所述第二计算节点存储于所述第二共享内存中来更新所述第二共享内存中的全局统计信息,其中所述全局统计信息被用于针对所述数据查询系统的查询请求查询统计信息。

14、在本公开的第三方面,提供了一种计算设备集群,其特征在于,包括至少一个计算设备,每个计算设备包括处理器和存储器,所述至少一个计算设备的处理器用于执行所述至少一个计算设备的存储器中存储的指令,以使得所述计算设备集群执行根据本公开的第一方面所述的方法。在一些实施例中,计算设备集群包括一个计算设备。在另一些实施例中,计算设备集群包括多个计算设备。在一些实施例中,计算设备可以是服务器,例如是中心服务器、边缘服务器,或者是本地数据中心中的本地服务器。在一些实施例中,计算设备也可以是台式机、笔记本电脑或者智能手机等终端设备。

15、在本公开的第四方面,提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有指令,所述指令在被计算设备执行时,使得所述计算设备执行根据本公开的第一方面所述的方法。在一些实施例中,计算机可读存储介质可以是非瞬态的。计算机可读存储介质包括但不限于易失性存储器(例如随机访问存储器)、非易失性存储器(例如快闪存储器、硬盘(hard disk drive,hdd)、固态盘(solid state drive,ssd)等)。

16、在本公开的第五方面,提供了一种计算机程序产品,其特征在于,所述计算机程序产品包括指令,所述指令在被计算设备执行时,使得所述计算设备执行根据本公开的第一方面所述的方法。在一些实施例中,程序产品可以包括一个或多个软件安装包,在需要使用前述第一方面或其可能的变形提供的方法的情况下,可以下载或拷贝软件安装包并在计算设备上执行。

本文地址:https://www.jishuxx.com/zhuanli/20240730/195840.html

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