双副本并行数据库的查询方法和装置的制造方法_4

文档序号:9787481阅读:来源:国知局
图5所示:
[0173] 1.客户端发送查询请求到查询服务;
[0174] 2.查询服务获取该查询语句的hashcode;
[0175] 3.在元数据库中确定查询请求涉及的数据是否有更新;
[0176] 具体的,查询元数据库信息,获取该hashcode对应的查询语句涉及的表是否有数 据更新;
[0177] 4.如果有数据更新,则按照执行计划,顺序执行子任务,获取查询结果;
[0178] 具体的,执行步骤206至步骤209。
[0179] 5.如果无数据更新,则在元数据库中确定是否有与查询请求对应的查询结果; [0180]具体的,在元数据库中检查是否有与该hashcode相同的hashcode,将是否有与该 hashcode相同的hashcode结果作为是否已经执行过该语句的结果;
[0181 ] 6.如未有与查询请求对应的查询结果,则将该hashcode写入元数据库,执行步骤 206至步骤209,获取查询结果;
[0182] 7.如有对应的查询结果,则获取对应的查询结果,直接复用,结束流程;
[0183] 8.重复执行2-7,直至所有查询子任务均执行完成,返回最终结果到客户端。
[0184] 本实施例提供的方法对整个查询服务的优化分为三阶段进行。阶段一,数据分布 采用三级分布;阶段二,查询执行节点选择依据最小资源方式;阶段三,查询结果重复利用。
[0185] 通过以上三阶段的查询优化,能够灵活的选择数据分布方式,提升特定查询应用 场景的查询性能。
[0186] 需要说明的是,通过三阶段查询优化,可以平衡单节点计算性能和集群节点间数 据传输能力,并结合查询结果复用技术,在一定程度上提升并行数据库的查询性能,但是这 种性能提升是以本发明中双副本并行数据库查询执行引擎为前提的,并不适合所有查询场 景。
[0187] 有益效果:
[0188] 获取查询请求并确定多个执行计划后,根据各执行计划中执行节点的资源利用 率、执行节点的预估数据传输量计算各执行计划的资源占用率,根据资源占用率从执行计 划中选择一个执行计划,由于最终查询时的执行计划实际的资源占用率息息相关,而资源 占用情况直接影响数据转移耗时及数据查询效率,因此本实施例提供的方法中最终查询时 的执行计划为数据转移耗时最短,数据查询效率最高的执行计划。
[0189] 基于同一发明构思,参见图6所示的实施例,本实施例提供了一种双副本并行数据 库的查询装置,由于这些装置解决问题的原理与一种双副本并行数据库的查询方法相似, 因此这些装置的实施可以参见方法的实施,重复之处不再赘述。
[0190] 参见图6,该装置,包括:
[0191 ]解析模块601,用于获取查询请求及数据的存储单元信息;根据所述查询请求及数 据的存储单元信息形成多个执行计划,其中,执行计划包括执行操作和与所述执行操作相 关的执彳丁节点。
[0192] 计算模块602,用于根据解析模块601形成的各执行计划中执行节点的资源利用 率、执行节点的预估数据传输量计算各执行计划的资源占用率,并根据资源占用率从执行 计划中选择一个执行计划;
[0193] 查询模块603,用于根据计算模块602选择的执行计划查询数据。
[0194] 参见图7,该装置,还包括:
[0195] 选择模块604,用于根据数据的数据量及查询类型选择数据的存储单元;
[0196] 存储模块605,用于将数据存储于选择模块604选择的存储单元内的并行数据库 中;
[0197] 第一元数据模块606,用于将数据的存储单元信息存储于元数据库中。
[0198] 其中,解析模块601,用于从元数据库中获取数据的存储单元信息;根据数据的存 储单元信息和查询请求类型将查询请求拆分成多个执行操作,确定各执行操作对应的执行 节点;根据执行操作及执行节点形成多个执行计划。
[0199] 其中,每个执行计划包含多个查询子任务;计算模块602,用于对于任一执行计划, 任一执行计划的资源占用率通过如下公式确定:
[0200]
[0201] 其中,m为任一执行计划中执行节点总数,kl为执行节点资源系数,k2为数据库资 源系数,k3为数据传输系数;
[0202] kl,k2,k3根据双副本并行数据库的查询性能瓶颈确定;
[0203] 执行节点资源利用率=中央处理器cpu利用率+内存memory利用率+磁盘disk利用 率+网络network利用率+执行节点对应的查询任务数/该执行节点正在执行的所有查询任 务总数;
[0204 ] 数据库资源利用率=进程pro ce s s利用率+会话s e s s i on利用率;
[0205] 数据传输量=执行操作的预估数据传输量*执行计划包含的查询子任务总数η。
[0206] 可选地,计算模块602,用于从执行计划中选择一个资源占用率最小的执行计划。
[0207] 参见图8,该装置,还包括:
[0208] 缓存模块607,用于存储查询结果;所述查询结果包括查询中间结果和查询最终结 果。
[0209] 参见图9,该装置,还包括:
[0210]第二元数据模块608,用于在存储单元内的并行数据库中数据更新后,将数据更新 信息存储于元数据库中。
[0211] 参见图10,该装置,还包括:
[0212] 第一确定模块609,用于根据元数据库中存储的数据更新信息确定查询请求对应 的数据是否有更新;
[0213] 第二确定模块610,用于当第一确定模块609确定无更新时,在确定是否有与查询 请求对应的查询结果;
[0214] 获取模块611,用于当第二确定模块610确定有对应的查询结果时,获取对应的查 询结果,结束流程;
[0215] 其中,解析模块601,用于当第一确定模块609确定有更新时,或者当第二确定模块 611确定未有对应的查询结果时,根据数据的存储单元信息形成多个执行计划。
[0216] 有益效果如下:
[0217] 获取查询请求并确定多个执行计划后,根据各执行计划中执行节点的资源利用 率、执行节点的预估数据传输量计算各执行计划的资源占用率,根据资源占用率从执行计 划中选择一个执行计划,由于最终查询时的执行计划实际的资源占用率息息相关,而资源 占用情况直接影响数据转移耗时及数据查询效率,因此本实施例提供的方法中最终查询时 的执行计划为数据转移耗时最短,数据查询效率最高的执行计划。
[0218] 上述实施例中,均可以采用现有的功能元器件模块来实施。例如,处理模块可以采 用现有的数据处理元器件,至少,现有定位技术中采用的定位服务器上便具备实现该功能 元器件;至于接收模块,则是任意一个具备信号传输功能的设备都具备的元器件;同时,处 理模块进行的A、n参数计算、强度调整等采用的都是现有的技术手段,本领域技术人员经过 相应的设计开发即可实现。
[0219] 为了描述的方便,以上所述装置的各部分以功能分为各种模块或单元分别描述。 当然,在实施本发明时可以把各模块或单元的功能在同一个或多个软件或硬件中实现。
[0220] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程 序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的 实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算 机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序 产品的形式。
[0221] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程 图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流 程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序 指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产 生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实 现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1