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

文档序号:9787481阅读:来源:国知局
置,选择集群节点作为存储单元。
[0125] 具体的,当表数据量较小时,涉及的查询场景比较单一时,可以创建单个数据库节 点为存储单元;当表数据量较大,查询场景比较单一时,可以创建集群半数节点的存储单 元;当查询类型偏向于关联分析时,可以考虑集群全部节点或半数以上节点来建立存储单 J L 〇
[0126] 202:在存储单元中建立并行数据库;
[0127] 在存储单元内部可以按照水平分区策略确定并行数据库之间的数据分布方式,常 见的有round-robin、hash、range、list,水平分区策略的选择依据查询类型而定,如果过滤 或分组查询,水平分区方式可以选择任意一种;如果是关联查询,则依据关联列可选择hash 分布。
[0128] 在单个并行数据库内部,可以按照垂直分区策略进行数据划分。
[0129] 执行步骤201和步骤202后,形成了图3所示的三级数据分布层次。数据三级分布包 括存储单元、水平分区、垂直分区,存储单元相对于整个集群,即并行数据库集群中的部分 数据库,每个数据库可以包含在多个存储单元中,最大的存储单元就是整个集群;水平分区 是相对于存储单元的,即按照某种数据划分策略,将数据均衡的分布在存储单元的所有数 据库中;垂直分区是相对于单个数据库的,即在单个数据库中,数据按照数据库的分区方法 均衡分布在不同分区中。
[0130] 203:将数据存储于存储单元内的并行数据库中;
[0131] 本实施例不对具体的数据存储方式进行限定,可以增量存储,也可以按其他方式 存储。
[0132] 204:将数据的存储单元信息存储于元数据库中;
[0133] 其中,元数据库独立于双副本并行数据库单独建立的数据库,可以存储于存储单 元中,也可以存储于独立设备中。
[0134] 需要说明的是,步骤201至步骤204并非每次均需执行的步骤,在首次通过本实施 例提供的方法查询数据库前可以通过步骤201至步骤204构建双副本并行数据库并存储数 据。在后续执行时,当需要重新构建双副本并行数据库时,可以重复执行步骤201至步骤 204,也可以执行步骤201至步骤204中的任意步骤或任意步骤的组合,完成双副本并行数据 库的重新构建。本实施例不对执行步骤201至步骤204的具体触发条件进行限定,本实施例 也不对重新执行步骤201至步骤204时具体选择执行的步骤进行限定。
[0135] 另外,若重复执行步骤203以更新数据库中数据时,或者由于其他原因导致存储单 元内的并行数据库中数据更新后,将数据更新信息存储于元数据库中。
[0136] 205:获取查询请求及数据的存储单元信息;
[0137] 本实施例不对获取查询请求的具体方式进行限定,包括但不限于:获取客户端发 送的查询请求。
[0138] 由于执行步骤204后,数据的存储单元信息存储于元数据库中,因此,获取数据的 存储单元信息的具体实现方式可以为:从元数据库中获取数据的存储单元信息。
[0139] 206:根据查询请求及数据的存储单元信息形成多个执行计划;
[0140]其中,执行计划包括执行操作和与执行操作相关的执行节点。
[0141] 本实施例中的执行计划并非仅包含一个任务,而是包含多个查询子任务,即每个 执行计划包含多个查询子任务。
[0142] 由于双副本并行数据库系统中,数据采用双副本存储,存储节点数据互备,因此, 对于同一张数据表的查询有两个执行节点可供选择,根据选择的执行节点不同,可以生成 多个的执行计划。
[0143] 本步骤在具体实施时,可以按照如下三个步骤执行:
[0144] 步骤一:根据数据的存储单元信息和查询请求的类型将查询请求拆分成多个执 行操作,确定各执行操作对应的执行节点;
[0145] 具体的,若存储单元中包括多个数据库,则可以将存储单元中的所有并行数据库 均确定为执行节点。
[0146] 步骤三:根据执行操作及执行节点形成多个执行计划。
[0147] 由于步骤201中存储单元选择时充分考虑了数据数量及查询类型,使得存储单元 中包含合理数量的并行数据库。步骤206中,当查询请求涉及的数据分布在其中某一存储单 元时,查询执行节点即为该存储单元包含的所有并行数据库,其中的数据传输也只在该存 储单元节点间进行,当数据量较大时,也可以一定程度上提高查询性能,相对于整个集群节 点的数据传输,这有效的减少了节点间数据传输带来的性能瓶颈和传输资源消耗。限定数 据存储单元虽然可以减少节点间的数据传输量,但在一定程度上也降低了执行计划中单个 子任务的查询性能,因此需在数据传输量和单个子任务查询性能间折中选择才能从整体上 提升查询性能。
[0148] 207:根据各执行计划中执行节点的资源利用率、执行节点的预估数据传输量计算 各执行计划的资源占用率;
[0149] 本步骤在具体实施时,综合考虑两个并行数据库的资源占用情况和查询语句涉及 的数据传输量,根据各执行计划中执行节点的资源利用率、执行节点的预估数据传输量计 算各执行计划的资源占用率。
[0150] 执行计划的资源占用率的具体实现方式,包括但不限于如下公式:
[0151]
[0152] 其中,m为任一执行计划中执行节点总数,kl为执行节点资源系数,k2为数据库资 源系数,k3为数据传输系数;
[0153] kl,k2,k3根据双副本并行数据库的查询性能瓶颈确定;
[0154] 若双副本并行数据库的查询性能瓶颈为数据传输,则可选ki = 0.25,k2 = 0.25,k3 =0.5〇
[0155] 执行节点资源利用率= cpu利用率+memory利用率+disk利用率+network利用率+ 执行操作对应的查询任务数;或者,
[0156] 节点资源得分= cpu利用率+memory利用率+disk利用率+network利用率+执行节 点对应的总查询任务数/该执行节点正在执行的所有查询任务总数;
[0157] 数据库资源利用率=进程proce s s利用率+会话se s s i on利用率;
[0158] 数据传输量=执行操作的预估数据传输量*执行计划包含的查询子任务总数η。
[0159] 208:根据资源占用率从执行计划中选择一个执行计划,根据选择的执行计划查询 数据;
[0160] 具体的,选择资源占用率最小的执行计划,据选择的执行计划查询数据。
[0161] 图4示出了本实施例提供方法进行数据查询的查询服务结构示意图,查询引擎从 客户端获取查询请求后,查询服务根据查询请求生成执行计划,并将执行计划分发到各存 储节点进行并行计算,得到查询结果。
[0162] 209:存储查询结果。
[0163] 其中,查询结果包括查询中间结果和查询最终结果。
[0164] 具体的,将查询结果缓存在执行节点本地,以供后续查询使用。
[0165] 在双副本并行数据库系统中,每个查询语句会被分解为多个子任务进行查询,每 个子任务均会生成一个中间结果,这些中间结果可直接作为相同子任务的执行结果,以节 省查询执行时间,降低查询资源的占用。因此,执行步骤208之后,还可以执行步骤209将保 存查询结果,以备后续重复使用。
[0166] 在存储查询结果时,可以获取查询结果对应的查询语句的hashcode(哈希码),将 hashcode和查询结果一起缓存在执行节点本地。使得hashcode为查询结果的唯一标识,相 同的的查询语句hashcode相同,查询服务根据hashcode来分析是否复用查询结果。
[0167] 具体的,执行步骤205后,根据元数据库中存储的数据更新信息确定查询请求对应 的数据是否有更新;
[0168] 若有更新,则触发执行步骤206至步骤209;
[0169] 若无更新,则在元数据库中确定是否有与查询请求对应的查询结果;
[0170] 若有对应的查询结果,则获取对应的查询结果,结束流程;
[0171] 若未有对应的查询结果,则触发执行步骤206至步骤209。
[0172] 对于复用查询结果的查询过程,如
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1