CN105550274B - 双副本并行数据库的查询方法和装置 - Google Patents
双副本并行数据库的查询方法和装置 Download PDFInfo
- Publication number
- CN105550274B CN105550274B CN201510908947.7A CN201510908947A CN105550274B CN 105550274 B CN105550274 B CN 105550274B CN 201510908947 A CN201510908947 A CN 201510908947A CN 105550274 B CN105550274 B CN 105550274B
- Authority
- CN
- China
- Prior art keywords
- execution
- data
- query
- storage unit
- utilization rate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 230000005540 biological transmission Effects 0.000 claims abstract description 47
- 238000003860 storage Methods 0.000 claims description 108
- 230000008569 process Effects 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 14
- 238000004458 analytical method Methods 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 claims description 6
- 238000012546 transfer Methods 0.000 abstract description 13
- 238000010586 diagram Methods 0.000 description 17
- 238000009826 distribution Methods 0.000 description 8
- 238000000638 solvent extraction Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 238000013500 data storage Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000005192 partition Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000013467 fragmentation Methods 0.000 description 2
- 238000006062 fragmentation reaction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000012098 association analyses Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种双副本并行数据库的查询方法和装置,属于数据库技术领域。方法包括:获取查询请求及数据的存储单元信息;根据查询请求及数据的存储单元信息形成多个执行计划;根据各执行计划中执行节点的资源利用率、执行节点的预估数据传输量计算各执行计划的资源占用率;根据资源占用率从执行计划中选择一个执行计划;根据选择的执行计划查询数据。本发明根据各执行计划中执行节点的资源利用率、执行节点的预估数据传输量计算各执行计划的资源占用率,根据资源占用率从执行计划中选择一个执行计划,由于资源占用情况影响数据转移耗时及数据查询效率,使得最终查询时执行计划的数据转移耗时短,数据查询效率高。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及双副本并行数据库的查询方法和装置。
背景技术
为了保证数据安全,提供24小时无间断数据服务,双副本并行数据库成为常用数据存储方式,相应的,双副本并行数据库的数据查询的效率也成为关注重点。其中,并行数据库为在MPP(Massively Parallel Processing,大规模并行处理系统)和集群并行计算环境的基础上建立的数据库系统。双副本并行数据库中的同一数据同时存储于两个并行数据库中,两个并行数据库中的相同数据互备。
目前,双副本并行数据库中数据均衡分布在集群节点上,数据查询时,通过对数据进行分片,并按照分片生成并行执行计划并启动多个线程并行执行查询请求。
当集群规模较大时,节点间的数据传输耗时较长,上述方法中数据均衡分布在集群节点上,使得数据查询时的数据转移耗时较长,影响了数据查询效率。
发明内容
为解决上述问题,本发明实施例提出了一种双副本并行数据库的查询方法和装置。
一方面,本发明实施例提供了一种双副本并行数据库的查询方法,包括:
获取查询请求及数据的存储单元信息;
根据所述查询请求及数据的存储单元信息形成多个执行计划,其中,执行计划包括执行操作和与所述执行操作相关的执行节点;
根据各执行计划中执行节点的资源利用率、执行节点的预估数据传输量计算各执行计划的资源占用率;
根据所述资源占用率从所述执行计划中选择一个执行计划;
根据选择的执行计划查询数据。
可选地,所述根据所述数据的存储单元信息形成多个执行计划之前,还包括:
根据数据的数据量及查询类型选择所述数据的存储单元;
将数据存储于所述存储单元内的并行数据库中;
将数据的存储单元信息存储于元数据库中。
可选地,获取数据的存储单元信息,包括:
从所述元数据库中获取数据的存储单元信息;
所述根据所述查询请求及数据的存储单元信息形成多个执行计划,包括:
根据所述数据的存储单元信息和所述查询请求的类型将所述查询请求拆分成多个执行操作,确定各执行操作对应的执行节点;
根据执行操作及执行节点形成多个执行计划。
可选地,每个执行计划包含多个查询子任务;
所述根据各执行计划中执行节点的资源利用率、执行节点的预估数据传输量计算各执行计划的资源占用率,包括:
对于任一执行计划,所述任一执行计划的资源占用率通过如下公式确定:
其中,m为所述任一执行计划中执行节点总数,k1为执行节点资源系数,k2为数据库资源系数,k3为数据传输系数;
所述k1,k2,k3根据所述双副本并行数据库的查询性能瓶颈确定;
所述执行节点资源利用率=中央处理器cpu利用率+内存memory利用率+磁盘disk利用率+网络network利用率+所述执行节点对应的查询任务数/所述执行节点正在执行的所有查询任务总数;
所述数据库资源利用率=进程process利用率+会话session利用率;
所述数据传输量=执行操作的预估数据传输量*所述执行计划包含的查询子任务总数n。
可选地,所述根据所述资源占用率从所述执行计划中选择一个执行计划,包括:
从所述执行计划中选择一个资源占用率最小的执行计划。
可选地,所述根据选择的执行计划查询数据之后,还包括:
存储查询结果;
所述查询结果包括查询中间结果和查询最终结果
可选地,所述方法,还包括:
所述存储单元内的并行数据库中数据更新后,将数据更新信息存储于所述元数据库中。
可选地,所述获取查询请求及数据的存储单元信息之后,在执行根据所述数据的存储单元信息形成多个执行计划之前,还包括:
根据所述元数据库中存储的数据更新信息确定所述查询请求对应的数据是否有更新;
若有更新,则触发执行根据所述数据的存储单元信息形成多个执行计划的步骤;
若无更新,则在所述元数据库中确定是否有与所述查询请求对应的查询结果;
若有对应的查询结果,则获取对应的查询结果,结束流程;
若未有对应的查询结果,则触发执行根据所述数据的存储单元信息形成多个执行计划的步骤。
另一方面,本发明实施例提供了一种双副本并行数据库的查询装置,包括:
解析模块,用于获取查询请求及数据的存储单元信息;根据所述查询请求及数据的存储单元信息形成多个执行计划,其中,执行计划包括执行操作和与所述执行操作相关的执行节点。
计算模块,用于根据所述解析模块形成的各执行计划中执行节点的资源利用率、执行节点的预估数据传输量计算各执行计划的资源占用率,并根据所述资源占用率从所述执行计划中选择一个执行计划;
查询模块,用于根据所述计算模块选择的执行计划查询数据。
可选地,所述装置,还包括:
选择模块,用于根据数据的数据量及查询类型选择所述数据的存储单元;
存储模块,用于将数据存储于所述选择模块选择的存储单元内的并行数据库中;
第一元数据模块,用于将数据的存储单元信息存储于元数据库中。
可选地,解析模块,用于从所述元数据库中获取数据的存储单元信息;根据所述数据的存储单元信息和查询请求类型将所述查询请求拆分成多个执行操作;确定各执行操作对应的执行节点;根据执行操作及执行节点形成多个执行计划。
可选地,每个执行计划包含多个查询子任务;
所述计算模块,用于对于任一执行计划,所述任一执行计划的资源占用率通过如下公式确定:
其中,m为所述任一执行计划中执行节点总数,k1为执行节点资源系数,k2为数据库资源系数,k3为数据传输系数;
所述k1,k2,k3根据所述双副本并行数据库的查询性能瓶颈确定;
所述执行节点资源利用率=中央处理器cpu利用率+内存memory利用率+磁盘disk利用率+网络network利用率+所述执节点对应的查询任务数/所述执 行节点正在执行的所有查询任务总数;
所述数据库资源利用率=进程process利用率+会话session利用率;
所述数据传输量=执行操作的预估数据传输量*所述执行计划包含的查询子任务总数n。
可选地,所述计算模块,用于从所述执行计划中选择一个资源占用率最小的执行计划。
可选地,所述装置,还包括:
缓存模块,用于存储查询结果;所述查询结果包括查询中间结果和查询最终结果。
可选地,所述装置,还包括:
第二元数据模块,用于在所述存储单元内的并行数据库中数据更新后,将数据更新信息存储于所述元数据库中。
可选地,所述装置,还包括:
第一确定模块,用于根据所述元数据库中存储的数据更新信息确定所述查询请求对应的数据是否有更新;
第二确定模块,用于当所述第一确定模块确定无更新时,在所述元数据库中确定是否有与所述查询请求对应的查询结果;
获取模块,用于当所述第二确定模块确定有对应的查询结果时,获取对应的查询结果,结束流程;
所述解析模块,用于当所述第一确定模块确定有更新时,或者当所述第二确定模块确定未有对应的查询结果时,根据数据的存储单元信息形成多个执行计划。
有益效果如下:
获取查询请求并确定多个执行计划后,根据各执行计划中执行节点的资源利用率、执行节点的预估数据传输量计算各执行计划的资源占用率,根据资源占用率从执行计划中选择一个执行计划,由于最终查询时的执行计划实际的资 源占用率息息相关,而资源占用情况直接影响数据转移耗时及数据查询效率,因此本实施例提供的方法中最终查询时的执行计划为数据转移耗时最短,数据查询效率最高的执行计划。
附图说明
下面将参照附图描述本发明的具体实施例,其中:
图1示出了本发明一种实施例中提供的一种双副本并行数据库的查询方法的流程示意图;
图2示出了本发明另一种实施例中提供的另一种双副本并行数据库的查询方法的流程示意图;
图3示出了本发明另一种实施例中提供的一种三级数据分布层次示意图;
图4示出了本发明另一种实施例中提供的一种查询服务结构示意图;
图5示出了本发明另一种实施例中提供的一种复用查询结果的查询过程示意图;
图6示出了本发明另一种实施例中提供的第一种双副本并行数据库的查询装置的结构示意图;
图7示出了本发明另一种实施例中提供的第二种双副本并行数据库的查询装置的结构示意图;
图8示出了本发明另一种实施例中提供的第三种双副本并行数据库的查询装置的结构示意图;
图9示出了本发明另一种实施例中提供的第四种双副本并行数据库的查询装置的结构示意图;
图10示出了本发明另一种实施例中提供的第五种双副本并行数据库的查询装置的结构示意图。
具体实施方式
为了使本发明的技术方案及优点更加清楚明白,以下结合附图对本发明的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本发明的一部分实施例,而不是所有实施例的穷举。并且在不冲突的情况下,本说明中的实施例及实施例中的特征可以互相结合。
双副本并行数据库中数据均衡分布在集群节点上,数据查询时,通过对数据进行分片,并按照分片生成并行执行计划并启动多个线程并行执行查询请求。当集群规模较大时,节点间的数据传输耗时较长,上述方法中数据均衡分布在集群节点上,使得数据查询时的数据转移耗时较长,影响了数据查询效率。为了降低数据查询时数据转移的耗时,提高数据查询效率,本发明提出了一种双副本并行数据库的查询方法,该方法应用于一种终端,该终端上运行有双副本并行数据库的查询装置,该双副本并行数据库的查询装置如下述图6至图10任一图所示的实施例所述的双副本并行数据库的查询装置。该双副本并行数据库的查询装置可以获取查询请求并确定多个执行计划后,根据各执行计划中执行节点的资源利用率、执行节点的预估数据传输量计算各执行计划的资源占用率,根据资源占用率从执行计划中选择一个执行计划,由于最终查询时的执行计划实际的资源占用率息息相关,而资源占用情况直接影响数据转移耗时及数据查询效率,因此本实施例提供的方法中最终查询时的执行计划为数据转移耗时最短,数据查询效率最高的执行计划。
结合上述实施环境,参见图1所示的实施例,本实施例提供了一种双副本并行数据库的查询方法,本实施例提供的方法流程具体如下:
101:获取查询请求及数据的存储单元信息;
102:根据查询请求及数据的存储单元信息形成多个执行计划,其中,执行计划包括执行操作和与执行操作相关的执行节点;
103:据各执行计划中执行节点的资源利用率、执行节点的预估数据传输量计算各执行计划的资源占用率;
104:根据资源占用率从执行计划中选择一个执行计划;
105:根据选择的执行计划查询数据。
可选地,根据数据的存储单元信息形成多个执行计划之前,还包括:
根据数据的数据量及查询类型选择数据的存储单元;
将数据存储于存储单元内的并行数据库中;
将数据的存储单元信息存储于元数据库中。
可选地,获取数据的存储单元信息,包括:
从元数据库中获取数据的存储单元信息;
根据查询请求及数据的存储单元信息形成多个执行计划,包括:
根据数据的存储单元信息和查询请求的类型将查询请求拆分成多个执行操作,确定各执行操作对应的执行节点;
根据执行操作及执行节点形成多个执行计划。
可选地,每个执行计划包含多个查询子任务;根据各执行计划中执行节点的资源利用率、执行节点的预估数据传输量计算各执行计划的资源占用率,包括:
对于任一执行计划,任一执行计划的资源占用率通过如下公式确定:
其中,m为任一执行计划中执行节点总数,k1为执行节点资源系数,k2为数据库资源系数,k3为数据传输系数;
k1,k2,k3根据双副本并行数据库的查询性能瓶颈确定;
执行节点资源利用率=中央处理器cpu利用率+内存memory利用率+磁盘disk利用率+网络network利用率+执行节点对应的查询任务数/执行节点正在执行的所有查询任务总数;
数据库资源利用率=进程process利用率+会话session利用率;
数据传输量=执行操作的预估数据传输量*执行计划包含的查询子任务总数n。
可选地,根据资源占用率从执行计划中选择一个执行计划,包括:
从执行计划中选择一个资源占用率最小的执行计划。
可选地,根据选择的执行计划查询数据之后,还包括:
存储查询结果;查询结果包括查询中间结果和查询最终结果。
可选地,该方法,还包括:
存储单元内的并行数据库中数据更新后,将数据更新信息存储于元数据库中。
可选地,获取查询请求及数据的存储单元信息之后,在执行根据数据的存储单元信息形成多个执行计划之前,还包括:
根据元数据库中存储的数据更新信息确定查询请求对应的数据是否有更新;
若有更新,则触发执行根据数据的存储单元信息形成多个执行计划的步骤:
若无更新,则在元数据库中确定是否有与查询请求对应的查询结果;
若有对应的查询结果,则获取对应的查询结果,结束流程;
若未有对应的查询结果,则触发执行根据数据的存储单元信息形成多个执行计划的步骤。
有益效果:
获取查询请求并确定多个执行计划后,根据各执行计划中执行节点的资源利用率、执行节点的预估数据传输量计算各执行计划的资源占用率,根据资源占用率从执行计划中选择一个执行计划,由于最终查询时的执行计划实际的资源占用率息息相关,而资源占用情况直接影响数据转移耗时及数据查询效率,因此本实施例提供的方法中最终查询时的执行计划为数据转移耗时最短,数据查询效率最高的执行计划。
结合上述实施环境,参见图2所示的实施例,本实施例提供了一种双副本 并行数据库的查询方法,本实施例提供的方法流程具体如下:
201:根据数据的数据量及查询类型选择数据的存储单元;
本步骤在具体实施时,对具体应用进行评估,确定表的数据量及查询类型,同时还可以考虑集群节点配置,选择集群节点作为存储单元。
具体的,当表数据量较小时,涉及的查询场景比较单一时,可以创建单个数据库节点为存储单元;当表数据量较大,查询场景比较单一时,可以创建集群半数节点的存储单元;当查询类型偏向于关联分析时,可以考虑集群全部节点或半数以上节点来建立存储单元。
202:在存储单元中建立并行数据库;
在存储单元内部可以按照水平分区策略确定并行数据库之间的数据分布方式,常见的有round-robin、hash、range、list,水平分区策略的选择依据查询类型而定,如果过滤或分组查询,水平分区方式可以选择任意一种;如果是关联查询,则依据关联列可选择hash分布。
在单个并行数据库内部,可以按照垂直分区策略进行数据划分。
执行步骤201和步骤202后,形成了图3所示的三级数据分布层次。数据三级分布包括存储单元、水平分区、垂直分区,存储单元相对于整个集群,即并行数据库集群中的部分数据库,每个数据库可以包含在多个存储单元中,最大的存储单元就是整个集群;水平分区是相对于存储单元的,即按照某种数据划分策略,将数据均衡的分布在存储单元的所有数据库中;垂直分区是相对于单个数据库的,即在单个数据库中,数据按照数据库的分区方法均衡分布在不同分区中。
203:将数据存储于存储单元内的并行数据库中;
本实施例不对具体的数据存储方式进行限定,可以增量存储,也可以按其他方式存储。
204:将数据的存储单元信息存储于元数据库中;
其中,元数据库独立于双副本并行数据库单独建立的数据库,可以存储于 存储单元中,也可以存储于独立设备中。
需要说明的是,步骤201至步骤204并非每次均需执行的步骤,在首次通过本实施例提供的方法查询数据库前可以通过步骤201至步骤204构建双副本并行数据库并存储数据。在后续执行时,当需要重新构建双副本并行数据库时,可以重复执行步骤201至步骤204,也可以执行步骤201至步骤204中的任意步骤或任意步骤的组合,完成双副本并行数据库的重新构建。本实施例不对执行步骤201至步骤204的具体触发条件进行限定,本实施例也不对重新执行步骤201至步骤204时具体选择执行的步骤进行限定。
另外,若重复执行步骤203以更新数据库中数据时,或者由于其他原因导致存储单元内的并行数据库中数据更新后,将数据更新信息存储于元数据库中。
205:获取查询请求及数据的存储单元信息;
本实施例不对获取查询请求的具体方式进行限定,包括但不限于:获取客户端发送的查询请求。
由于执行步骤204后,数据的存储单元信息存储于元数据库中,因此,获取数据的存储单元信息的具体实现方式可以为:从元数据库中获取数据的存储单元信息。
206:根据查询请求及数据的存储单元信息形成多个执行计划;
其中,执行计划包括执行操作和与执行操作相关的执行节点。
本实施例中的执行计划并非仅包含一个任务,而是包含多个查询子任务,即每个执行计划包含多个查询子任务。
由于双副本并行数据库系统中,数据采用双副本存储,存储节点数据互备,因此,对于同一张数据表的查询有两个执行节点可供选择,根据选择的执行节点不同,可以生成多个的执行计划。
本步骤在具体实施时,可以按照如下三个步骤执行:
步骤一:根据数据的存储单元信息和查询请求的类型将查询请求拆分成多 个执行操作,确定各执行操作对应的执行节点;
具体的,若存储单元中包括多个数据库,则可以将存储单元中的所有并行数据库均确定为执行节点。
步骤三:根据执行操作及执行节点形成多个执行计划。
由于步骤201中存储单元选择时充分考虑了数据数量及查询类型,使得存储单元中包含合理数量的并行数据库。步骤206中,当查询请求涉及的数据分布在其中某一存储单元时,查询执行节点即为该存储单元包含的所有并行数据库,其中的数据传输也只在该存储单元节点间进行,当数据量较大时,也可以一定程度上提高查询性能,相对于整个集群节点的数据传输,这有效的减少了节点间数据传输带来的性能瓶颈和传输资源消耗。限定数据存储单元虽然可以减少节点间的数据传输量,但在一定程度上也降低了执行计划中单个子任务的查询性能,因此需在数据传输量和单个子任务查询性能间折中选择才能从整体上提升查询性能。
207:根据各执行计划中执行节点的资源利用率、执行节点的预估数据传输量计算各执行计划的资源占用率;
本步骤在具体实施时,综合考虑两个并行数据库的资源占用情况和查询语句涉及的数据传输量,根据各执行计划中执行节点的资源利用率、执行节点的预估数据传输量计算各执行计划的资源占用率。
执行计划的资源占用率的具体实现方式,包括但不限于如下公式:
其中,m为任一执行计划中执行节点总数,k1为执行节点资源系数,k2为数据库资源系数,k3为数据传输系数;
k1,k2,k3根据双副本并行数据库的查询性能瓶颈确定;
若双副本并行数据库的查询性能瓶颈为数据传输,则可选k1=0.25,k2=0.25,k3=0.5。
执行节点资源利用率=cpu利用率+memory利用率+disk利用率+network利用率+执行操作对应的查询任务数;或者,
节点资源得分=cpu利用率+memory利用率+disk利用率+network利用率+执行节点对应的总查询任务数/该执行节点正在执行的所有查询任务总数;
数据库资源利用率=进程process利用率+会话session利用率;
数据传输量=执行操作的预估数据传输量*执行计划包含的查询子任务总数n。
208:根据资源占用率从执行计划中选择一个执行计划,根据选择的执行计划查询数据;
具体的,选择资源占用率最小的执行计划,据选择的执行计划查询数据。
图4示出了本实施例提供方法进行数据查询的查询服务结构示意图,查询引擎从客户端获取查询请求后,查询服务根据查询请求生成执行计划,并将执行计划分发到各存储节点进行并行计算,得到查询结果。
209:存储查询结果。
其中,查询结果包括查询中间结果和查询最终结果。
具体的,将查询结果缓存在执行节点本地,以供后续查询使用。
在双副本并行数据库系统中,每个查询语句会被分解为多个子任务进行查询,每个子任务均会生成一个中间结果,这些中间结果可直接作为相同子任务的执行结果,以节省查询执行时间,降低查询资源的占用。因此,执行步骤208之后,还可以执行步骤209将保存查询结果,以备后续重复使用。
在存储查询结果时,可以获取查询结果对应的查询语句的hashcode(哈希码),将hashcode和查询结果一起缓存在执行节点本地。使得hashcode为查询结果的唯一标识,相同的的查询语句hashcode相同,查询服务根据hashcode来分析是否复用查询结果。
具体的,执行步骤205后,根据元数据库中存储的数据更新信息确定查询请求对应的数据是否有更新;
若有更新,则触发执行步骤206至步骤209;
若无更新,则在元数据库中确定是否有与查询请求对应的查询结果;
若有对应的查询结果,则获取对应的查询结果,结束流程;
若未有对应的查询结果,则触发执行步骤206至步骤209。
对于复用查询结果的查询过程,如图5所示:
1.客户端发送查询请求到查询服务;
2.查询服务获取该查询语句的hashcode;
3.在元数据库中确定查询请求涉及的数据是否有更新;
具体的,查询元数据库信息,获取该hashcode对应的查询语句涉及的表是否有数据更新;
4.如果有数据更新,则按照执行计划,顺序执行子任务,获取查询结果;
具体的,执行步骤206至步骤209。
5.如果无数据更新,则在元数据库中确定是否有与查询请求对应的查询结果;
具体的,在元数据库中检查是否有与该hashcode相同的hashcode,将是否有与该hashcode相同的hashcode结果作为是否已经执行过该语句的结果;
6.如未有与查询请求对应的查询结果,则将该hashcode写入元数据库,执行步骤206至步骤209,获取查询结果;
7.如有对应的查询结果,则获取对应的查询结果,直接复用,结束流程;
8.重复执行2-7,直至所有查询子任务均执行完成,返回最终结果到客户端。
本实施例提供的方法对整个查询服务的优化分为三阶段进行。阶段一,数据分布采用三级分布;阶段二,查询执行节点选择依据最小资源方式;阶段三,查询结果重复利用。
通过以上三阶段的查询优化,能够灵活的选择数据分布方式,提升特定查询应用场景的查询性能。
需要说明的是,通过三阶段查询优化,可以平衡单节点计算性能和集群节点间数据传输能力,并结合查询结果复用技术,在一定程度上提升并行数据库的查询性能,但是这种性能提升是以本发明中双副本并行数据库查询执行引擎为前提的,并不适合所有查询场景。
有益效果:
获取查询请求并确定多个执行计划后,根据各执行计划中执行节点的资源利用率、执行节点的预估数据传输量计算各执行计划的资源占用率,根据资源占用率从执行计划中选择一个执行计划,由于最终查询时的执行计划实际的资源占用率息息相关,而资源占用情况直接影响数据转移耗时及数据查询效率,因此本实施例提供的方法中最终查询时的执行计划为数据转移耗时最短,数据查询效率最高的执行计划。
基于同一发明构思,参见图6所示的实施例,本实施例提供了一种双副本并行数据库的查询装置,由于这些装置解决问题的原理与一种双副本并行数据库的查询方法相似,因此这些装置的实施可以参见方法的实施,重复之处不再赘述。
参见图6,该装置,包括:
解析模块601,用于获取查询请求及数据的存储单元信息;根据所述查询请求及数据的存储单元信息形成多个执行计划,其中,执行计划包括执行操作和与所述执行操作相关的执行节点。
计算模块602,用于根据解析模块601形成的各执行计划中执行节点的资源利用率、执行节点的预估数据传输量计算各执行计划的资源占用率,并根据资源占用率从执行计划中选择一个执行计划;
查询模块603,用于根据计算模块602选择的执行计划查询数据。
参见图7,该装置,还包括:
选择模块604,用于根据数据的数据量及查询类型选择数据的存储单元;
存储模块605,用于将数据存储于选择模块604选择的存储单元内的并行数据库中;
第一元数据模块606,用于将数据的存储单元信息存储于元数据库中。
其中,解析模块601,用于从元数据库中获取数据的存储单元信息;根据数据的存储单元信息和查询请求类型将查询请求拆分成多个执行操作,确定各执行操作对应的执行节点;根据执行操作及执行节点形成多个执行计划。
其中,每个执行计划包含多个查询子任务;计算模块602,用于对于任一执行计划,任一执行计划的资源占用率通过如下公式确定:
其中,m为任一执行计划中执行节点总数,k1为执行节点资源系数,k2为数据库资源系数,k3为数据传输系数;
k1,k2,k3根据双副本并行数据库的查询性能瓶颈确定;
执行节点资源利用率=中央处理器cpu利用率+内存memory利用率+磁盘disk利用率+网络network利用率+执行节点对应的查询任务数/该执行节点正在执行的所有查询任务总数;
数据库资源利用率=进程process利用率+会话session利用率;
数据传输量=执行操作的预估数据传输量*执行计划包含的查询子任务总数n。
可选地,计算模块602,用于从执行计划中选择一个资源占用率最小的执行计划。
参见图8,该装置,还包括:
缓存模块607,用于存储查询结果;所述查询结果包括查询中间结果和查询最终结果。
参见图9,该装置,还包括:
第二元数据模块608,用于在存储单元内的并行数据库中数据更新后,将数据更新信息存储于元数据库中。
参见图10,该装置,还包括:
第一确定模块609,用于根据元数据库中存储的数据更新信息确定查询请求对应的数据是否有更新;
第二确定模块610,用于当第一确定模块609确定无更新时,在确定是否有与查询请求对应的查询结果;
获取模块611,用于当第二确定模块610确定有对应的查询结果时,获取对应的查询结果,结束流程;
其中,解析模块601,用于当第一确定模块609确定有更新时,或者当第二确定模块611确定未有对应的查询结果时,根据数据的存储单元信息形成多个执行计划。
有益效果如下:
获取查询请求并确定多个执行计划后,根据各执行计划中执行节点的资源利用率、执行节点的预估数据传输量计算各执行计划的资源占用率,根据资源占用率从执行计划中选择一个执行计划,由于最终查询时的执行计划实际的资源占用率息息相关,而资源占用情况直接影响数据转移耗时及数据查询效率,因此本实施例提供的方法中最终查询时的执行计划为数据转移耗时最短,数据查询效率最高的执行计划。
上述实施例中,均可以采用现有的功能元器件模块来实施。例如,处理模块可以采用现有的数据处理元器件,至少,现有定位技术中采用的定位服务器上便具备实现该功能元器件;至于接收模块,则是任意一个具备信号传输功能的设备都具备的元器件;同时,处理模块进行的A、n参数计算、强度调整等采用的都是现有的技术手段,本领域技术人员经过相应的设计开发即可实现。
为了描述的方便,以上所述装置的各部分以功能分为各种模块或单元分别描述。当然,在实施本发明时可以把各模块或单元的功能在同一个或多个软件或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计 算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
Claims (14)
1.一种双副本并行数据库的查询方法,其特征在于,包括:
获取查询请求及数据的存储单元信息;
根据所述查询请求及数据的存储单元信息形成多个执行计划,其中,执行计划包括执行操作和与所述执行操作相关的执行节点;
根据各执行计划中执行节点的资源利用率、执行节点的预估数据传输量计算各执行计划的资源占用率;
根据所述资源占用率从所述执行计划中选择一个执行计划;
根据选择的执行计划查询数据;
所述获取查询请求及数据的存储单元信息之前,还包括:
根据数据的数据量及查询类型选择所述数据的存储单元;
将数据存储于所述存储单元内的并行数据库中;
将数据的存储单元信息存储于元数据库中。
2.根据权利要求1所述的方法,其特征在于,获取数据的存储单元信息,包括:
从所述元数据库中获取数据的存储单元信息;
所述根据所述查询请求及数据的存储单元信息形成多个执行计划,包括:
根据所述数据的存储单元信息和所述查询请求的类型将所述查询请求拆分成多个执行操作,确定各执行操作对应的执行节点;
根据执行操作及执行节点形成多个执行计划。
3.根据权利要求2所述的方法,其特征在于,每个执行计划包含多个查询子任务;
所述根据各执行计划中执行节点的资源利用率、执行节点的预估数据传输量计算各执行计划的资源占用率,包括:
对于任一执行计划,所述任一执行计划的资源占用率通过如下公式确定:
其中,m为所述任一执行计划中执行节点总数,k1为执行节点资源系数,k2为数据库资源系数,k3为数据传输系数;
所述k1,k2,k3根据所述双副本并行数据库的查询性能瓶颈确定;
所述执行节点资源利用率=中央处理器cpu利用率+内存memory利用率+磁盘disk利用率+网络network利用率+所述执行节点对应的查询任务数/所述执行节点正在执行的所有查询任务总数;
所述数据库资源利用率=进程process利用率+会话session利用率;
所述数据传输量=执行操作的预估数据传输量*所述执行计划包含的查询子任务总数n。
4.根据权利要求1所述的方法,其特征在于,所述根据所述资源占用率从所述执行计划中选择一个执行计划,包括:
从所述执行计划中选择一个资源占用率最小的执行计划。
5.根据权利要求3所述的方法,其特征在于,所述根据选择的执行计划查询数据之后,还包括:
存储查询结果;
所述查询结果包括查询中间结果和查询最终结果。
6.根据权利要求5所述的方法,其特征在于,所述方法,还包括:
所述存储单元内的并行数据库中数据更新后,将数据更新信息存储于所述元数据库中。
7.根据权利要求6所述的方法,其特征在于,所述获取查询请求及数据的存储单元信息之后,在执行根据所述数据的存储单元信息形成多个执行计划之前,还包括:
根据所述元数据库中存储的数据更新信息确定所述查询请求对应的数据是否有更新;
若有更新,则触发执行根据所述数据的存储单元信息形成多个执行计划的步骤;
若无更新,则在所述元数据库中确定是否有与所述查询请求对应的查询结果;
若有对应的查询结果,则获取对应的查询结果,结束流程;
若未有对应的查询结果,则触发执行根据所述数据的存储单元信息形成多个执行计划的步骤。
8.一种双副本并行数据库的查询装置,其特征在于,包括:
解析模块,用于获取查询请求及数据的存储单元信息;根据所述查询请求及数据的存储单元信息形成多个执行计划,其中,执行计划包括执行操作和与所述执行操作相关的执行节点;
计算模块,用于根据所述解析模块形成的各执行计划中执行节点的资源利用率、执行节点的预估数据传输量计算各执行计划的资源占用率,并根据所述资源占用率从所述执行计划中选择一个执行计划;
查询模块,用于根据所述计算模块选择的执行计划查询数据;
所述装置,还包括:
选择模块,用于根据数据的数据量及查询类型选择所述数据的存储单元;
存储模块,用于将数据存储于所述选择模块选择的存储单元内的并行数据库中;
第一元数据模块,用于将数据的存储单元信息存储于元数据库中。
9.根据权利要求8所述的装置,其特征在于,解析模块,用于从所述元数据库中获取数据的存储单元信息;根据所述数据的存储单元信息和查询请求类型将所述查询请求拆分成多个执行操作,确定各执行操作对应的执行节点;根据执行操作及执行节点形成多个执行计划。
10.根据权利要求9所述的装置,其特征在于,每个执行计划包含多个查询子任务;
所述计算模块,用于对于任一执行计划,所述任一执行计划的资源占用率通过如下公式确定:
其中,m为所述任一执行计划中执行节点总数,k1为执行节点资源系数,k2为数据库资源系数,k3为数据传输系数;
所述k1,k2,k3根据所述双副本并行数据库的查询性能瓶颈确定;
所述执行节点资源利用率=中央处理器cpu利用率+内存memory利用率+磁盘disk利用率+网络network利用率+所述执行节点对应的查询任务数/所述执行节点正在执行的所有查询任务总数;
所述数据库资源利用率=进程process利用率+会话session利用率;
所述数据传输量=执行操作的预估数据传输量*所述执行计划包含的查询子任务总数n。
11.根据权利要求8所述的装置,其特征在于,所述计算模块,用于从所述执行计划中选择一个资源占用率最小的执行计划。
12.根据权利要求10所述的装置,其特征在于,所述装置,还包括:
缓存模块,用于存储查询结果;所述查询结果包括查询中间结果和查询最终结果。
13.根据权利要求12所述的装置,其特征在于,所述装置,还包括:
第二元数据模块,用于在所述存储单元内的并行数据库中数据更新后,将数据更新信息存储于所述元数据库中。
14.根据权利要求13所述的装置,其特征在于,所述装置,还包括:
第一确定模块,用于根据所述元数据库中存储的数据更新信息确定所述查询请求对应的数据是否有更新;
第二确定模块,用于当所述第一确定模块确定无更新时,确定是否有与所述查询请求对应的查询结果;
获取模块,用于当所述第二确定模块确定有对应的查询结果时,获取对应的查询结果,结束流程;
所述解析模块,用于当所述第一确定模块确定有更新时,或者当所述第二确定模块确定未有对应的查询结果时,根据数据的存储单元信息形成多个执行计划。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510908947.7A CN105550274B (zh) | 2015-12-10 | 2015-12-10 | 双副本并行数据库的查询方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510908947.7A CN105550274B (zh) | 2015-12-10 | 2015-12-10 | 双副本并行数据库的查询方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105550274A CN105550274A (zh) | 2016-05-04 |
CN105550274B true CN105550274B (zh) | 2019-01-25 |
Family
ID=55829463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510908947.7A Active CN105550274B (zh) | 2015-12-10 | 2015-12-10 | 双副本并行数据库的查询方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105550274B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528341B (zh) * | 2016-11-09 | 2019-07-30 | 上海新炬网络信息技术股份有限公司 | 基于Greenplum数据库的自动化容灾系统 |
CN108108384B (zh) * | 2016-11-25 | 2020-10-09 | 中国移动通信有限公司研究院 | 一种数据存储方法及装置 |
US20180173753A1 (en) * | 2016-12-16 | 2018-06-21 | Futurewei Technologies, Inc. | Database system and method for compiling serial and parallel database query execution plans |
CN107329983B (zh) * | 2017-06-01 | 2020-12-01 | 昆仑智汇数据科技(北京)有限公司 | 一种机器数据分布式存储、读取方法及系统 |
CN107688660B (zh) * | 2017-09-08 | 2020-03-13 | 上海达梦数据库有限公司 | 并行执行计划的执行方法及装置 |
CN108664579B (zh) * | 2018-05-03 | 2021-07-02 | 杭州美登科技股份有限公司 | 海量数据实时筛选分析方法、系统及存储介质 |
CN109496420B (zh) * | 2018-08-22 | 2021-02-23 | 袁振南 | 环状服务器集群管理方法、装置及计算机存储介质 |
US11971793B2 (en) | 2019-03-05 | 2024-04-30 | Micro Focus Llc | Machine learning model-based dynamic prediction of estimated query execution time taking into account other, concurrently executing queries |
WO2020198925A1 (en) * | 2019-03-29 | 2020-10-08 | Pivotal Software, Inc. | Predicted properties for database query planning |
CN111949686B (zh) * | 2019-05-14 | 2024-05-14 | 阿里巴巴集团控股有限公司 | 一种数据处理方法、装置及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103384206A (zh) * | 2012-05-02 | 2013-11-06 | 中国科学院计算机网络信息中心 | 一种面向海量数据的并行处理方法及系统 |
CN103577407A (zh) * | 2012-07-19 | 2014-02-12 | 国际商业机器公司 | 用于分布式数据库的查询方法及查询装置 |
CN104885078A (zh) * | 2012-12-29 | 2015-09-02 | 华为技术有限公司 | 用于大规模并行处理数据库集群中的两阶段查询优化的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7383247B2 (en) * | 2005-08-29 | 2008-06-03 | International Business Machines Corporation | Query routing of federated information systems for fast response time, load balance, availability, and reliability |
US20140114952A1 (en) * | 2012-10-23 | 2014-04-24 | Microsoft Corporation | Optimizing queries of parallel databases |
-
2015
- 2015-12-10 CN CN201510908947.7A patent/CN105550274B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103384206A (zh) * | 2012-05-02 | 2013-11-06 | 中国科学院计算机网络信息中心 | 一种面向海量数据的并行处理方法及系统 |
CN103577407A (zh) * | 2012-07-19 | 2014-02-12 | 国际商业机器公司 | 用于分布式数据库的查询方法及查询装置 |
CN104885078A (zh) * | 2012-12-29 | 2015-09-02 | 华为技术有限公司 | 用于大规模并行处理数据库集群中的两阶段查询优化的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105550274A (zh) | 2016-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105550274B (zh) | 双副本并行数据库的查询方法和装置 | |
US11281669B2 (en) | Parallel processing database system | |
US11120026B1 (en) | System and method for executing queries on multi-graphics processing unit systems | |
JP6338817B2 (ja) | データベースミドルウェアを用いたデータ管理システム及びその方法 | |
CN104063486B (zh) | 一种大数据分布式存储方法和系统 | |
US9152669B2 (en) | System and method for distributed SQL join processing in shared-nothing relational database clusters using stationary tables | |
US10223437B2 (en) | Adaptive data repartitioning and adaptive data replication | |
US20150120645A1 (en) | System and Method for Creating a Distributed Transaction Manager Supporting Repeatable Read Isolation level in a MPP Database | |
EP3373158B1 (en) | Data storage method and coordinator node | |
CN107545005A (zh) | 一种数据处理方法及装置 | |
US20180121532A1 (en) | Data table partitioning management method and apparatus | |
JP7440007B2 (ja) | データベースをクエリするためのシステム、方法および装置 | |
CN105471893A (zh) | 一种分布式等值数据流连接方法 | |
CN111400301B (zh) | 一种数据查询方法、装置及设备 | |
CN108228654A (zh) | 一种大数据分布式存储方法和系统 | |
CN116775712A (zh) | 联表查询方法、装置、电子设备、分布式系统和存储介质 | |
CN111831425B (zh) | 一种数据处理方法、装置及设备 | |
US10963426B1 (en) | Method of providing access controls and permissions over relational data stored in a hadoop file system | |
CN111125151A (zh) | Mpp架构下聚集函数的执行方法和数据库系统 | |
CN118394794B (zh) | 一种跨多个数据源的联邦查询装置 | |
CN117194470A (zh) | 基于Lambda架构的实时数据融合处理系统及方法 | |
CN113961583A (zh) | 一种数据处理方法、装置及设备 | |
CN114297221A (zh) | 一种数据访问方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220727 Address after: 100089 building 36, courtyard 8, Dongbeiwang West Road, Haidian District, Beijing Patentee after: Dawning Information Industry (Beijing) Co.,Ltd. Patentee after: DAWNING INFORMATION INDUSTRY Co.,Ltd. Address before: 100193 building 36, Zhongguancun Software Park, 8 North East West Road, Haidian District, Beijing. Patentee before: Dawning Information Industry (Beijing) Co.,Ltd. |