一种数据查询方法及装置制造方法及图纸

技术编号:21628274 阅读:38 留言:0更新日期:2019-07-17 10:53
本申请实施例提供了一种数据查询方法及装置,方法包括:获取查询请求;根据所述查询请求建立至少一个计划树;根据预设的网络传输权重系数、I/O权重系数和CPU计算权重系数,确定每个计划树的代价;按照代价最低的计划树查询数据。应用本申请实施例,提高了数据查询效率。

A Data Query Method and Device

【技术实现步骤摘要】
一种数据查询方法及装置
本申请涉及数据库
,特别是涉及一种数据查询方法及装置。
技术介绍
随着计算机技术的快速发展,电子数据激增。为了便于快速查询数据,基于结构化查询语言(StructuredQueryLanguage,SQL)的数据查询系统,如GoogleDremel、ClouderaImpala、BerkeleyShark、ApacheDrill等应运而生。目前,利用数据查询系统查询数据时,用户将查询请求输入数据查询系统,数据查询系统基于查询请求可能建立执行计划,根据执行计划查询数据。在数据查询系统在查询数据时,对执行计划进行代价估计,确定执行计划的最佳的连接顺序,也就是确定出耗时最少的执行计划,进而提高查询效率。但由于执行计划的代价估算不准确,也就无法有效的提高查询效率。
技术实现思路
本申请实施例的目的在于提供一种数据查询方法及装置,以提高数据查询效率。具体技术方案如下:一方面,本申请实施例提供了一种数据查询方法,所述方法包括:获取查询请求;根据所述查询请求建立至少一个计划树;根据预设的网络传输权重系数、输入(Input,I)/输出(Output,O)权重系数和中央处理器(CentralProcessingUnit,CPU)计算权重系数,确定每个计划树的代价;按照代价最低的计划树查询数据。在本申请的一个实施例中,所述根据预设的网络传输权重系数、I/O权重系数和CPU计算权重系数,确定每个计划树的代价的步骤,包括:根据预设的网络传输权重系数、I/O权重系数和操作的CPU计算权重系数,计算每个计划树中每一操作的代价;根据得到的每个计划树中每一操作的代价,确定每个计划树的代价。在本申请的一个实施例中,所述计划树中包括扫描(scan)操作、过滤(filter)操作、投影(project)操作、广播连接(broatcastjoin)操作、洗牌哈希连接(shufflehashjoin)操作、排序合并连接(sortmergejoin)操作和分组(groupby)操作中的一种或多种;所述根据预设的网络传输权重系数、I/O权重系数和操作的CPU计算权重系数,计算每个计划树中每一操作的代价的步骤,包括:若计划树中包括scan操作,根据预设的I/O权重系数,计算每个计划树中scan操作的代价;若计划树中包括filter操作,根据预设的filter操作的CPU计算权重系数,计算每个计划树中filter操作的代价;若计划树中包括project操作,根据预设的project操作的CPU计算权重系数,计算每个计划树中project操作的代价;若计划树中包括broatcastjoin操作,根据预设的网络传输权重系数和broatcastjoin操作的CPU计算权重系数,计算每个计划树中broatcastjoin操作的代价;若计划树中包括shufflehashjoin操作,根据预设的网络传输权重系数、I/O权重系数和shufflehashjoin操作的CPU计算权重系数,计算每个计划树中shufflehashjoin操作的代价;若计划树中包括sortmergejoin操作,根据预设的网络传输权重系数、I/O权重系数和sortmergejoin操作的CPU计算权重系数,计算每个计划树中sortmergejoin操作的代价;若计划树中包括groupby操作,根据预设的网络传输权重系数、I/O权重系数和groupby操作的CPU计算权重系数,计算每个计划树中groupby操作的代价。在本申请的一个实施例中,所述根据预设的I/O权重系数,计算每个计划树中scan操作的代价的步骤,包括:根据预设的I/O权重系数、作为scan操作对象的表的行总数、以及数据查询系统的节点数,计算每个计划树中scan操作的代价。在本申请的一个实施例中,所述根据预设的filter操作的CPU计算权重系数,计算每个计划树中filter操作的代价的步骤,包括:根据预设的filter操作的CPU计算权重系数、以及作为filter操作对象的表的行总数,计算每个计划树中filter操作的代价。在本申请的一个实施例中,所述根据预设的project操作的CPU计算权重系数,计算每个计划树中project操作的代价的步骤,包括:根据预设的project操作的CPU计算权重系数、作为project操作对象的表的行总数、以及根据所述查询请求从作为project操作对象的表中选择行的概率,计算每个计划树中project操作的代价。在本申请的一个实施例中,通过以下方式确定根据所述查询请求从作为project操作对象的表中选择行的概率:根据预先存储的各个表的列信息,确定根据所述查询请求中每一个条件表达式从作为project操作对象的表中选择行的概率;所述列信息包括每一列去重后的行总数;根据所述查询请求中条件表达式间的运算符,确定根据所述查询请求从作为project操作对象的表中选择行的概率。在本申请的一个实施例中,若表中的列为数据列,所述列信息还包括:最大值和最小值。在本申请的一个实施例中,所述根据所述查询请求中条件表达式间的运算符,确定根据所述查询请求从作为project操作对象的表中选择行的概率的步骤,包括:若所述查询请求中条件表达式间的运算符为且(and),则确定根据所述查询请求从作为project操作对象的表中选择行的概率为:根据and两侧的条件表达式选择行的概率的乘积;若所述查询请求中条件表达式间的运算符为或(or),则确定根据所述查询请求从作为project操作对象的表中选择行的概率为:根据or两侧的条件表达式选择根据的概率的和减去根据or两侧的条件表达式选择行的概率乘积。在本申请的一个实施例中,所述根据预设的网络传输权重系数和broatcastjoin操作的CPU计算权重系数,计算每个计划树中broatcastjoin操作的代价的步骤,包括:根据预设的网络传输权重系数、broatcastjoin操作的CPU计算权重系数、broatcastjoin操作的join关系中左表查询结果的行总数、broatcastjoin操作的join关系中右表查询结果的行总数、以及数据查询系统的节点数,计算每个计划树中broatcastjoin操作的代价。在本申请的一个实施例中,所述根据预设的网络传输权重系数、I/O权重系数和shufflehashjoin操作的CPU计算权重系数,计算每个计划树中shufflehashjoin操作的代价的步骤,包括:根据预设的网络传输权重系数、I/O权重系数、shufflehashjoin操作的join关系中左表查询结果的行总数、以及shufflehashjoin操作的join关系中左表的映射任务(maptask)的个数,计算每个计划树中shufflehashjoin操作的左代价;根据预设的网络传输权重系数、I/O权重系数、shufflehashjoin操作的join关系中右表查询结果的行总数、以及shufflehashjoin操作的join关系中右表的maptask的个数,计算每个计划树中shufflehashjoin操作的右代价;根据计算得到的每个计划树中shufflehashjoin操作的左代价和右代价、预设的shufflehashjoin操本文档来自技高网...

【技术保护点】
1.一种数据查询方法,其特征在于,所述方法包括:获取查询请求;根据所述查询请求建立至少一个计划树;根据预设的网络传输权重系数、输入I/输出O权重系数和中央处理器CPU计算权重系数,确定每个计划树的代价;按照代价最低的计划树查询数据。

【技术特征摘要】
1.一种数据查询方法,其特征在于,所述方法包括:获取查询请求;根据所述查询请求建立至少一个计划树;根据预设的网络传输权重系数、输入I/输出O权重系数和中央处理器CPU计算权重系数,确定每个计划树的代价;按照代价最低的计划树查询数据。2.根据权利要求1所述的方法,其特征在于,所述根据预设的网络传输权重系数、I/O权重系数和CPU计算权重系数,确定每个计划树的代价的步骤,包括:根据预设的网络传输权重系数、I/O权重系数和操作的CPU计算权重系数,计算每个计划树中每一操作的代价;根据得到的每个计划树中每一操作的代价,确定每个计划树的代价。3.根据权利要求2所述的方法,其特征在于,所述计划树中包括扫描scan操作、过滤filter操作、投影project操作、广播连接broatcastjoin操作、洗牌哈希连接shufflehashjoin操作、排序合并连接sortmergejoin操作和分组groupby操作中的一种或多种;所述根据预设的网络传输权重系数、I/O权重系数和操作的CPU计算权重系数,计算每个计划树中每一操作的代价的步骤,包括:若计划树中包括scan操作,根据预设的I/O权重系数,计算每个计划树中scan操作的代价;若计划树中包括filter操作,根据预设的filter操作的CPU计算权重系数,计算每个计划树中filter操作的代价;若计划树中包括project操作,根据预设的project操作的CPU计算权重系数,计算每个计划树中project操作的代价;若计划树中包括broatcastjoin操作,根据预设的网络传输权重系数和broatcastjoin操作的CPU计算权重系数,计算每个计划树中broatcastjoin操作的代价;若计划树中包括shufflehashjoin操作,根据预设的网络传输权重系数、I/O权重系数和shufflehashjoin操作的CPU计算权重系数,计算每个计划树中shufflehashjoin操作的代价;若计划树中包括sortmergejoin操作,根据预设的网络传输权重系数、I/O权重系数和sortmergejoin操作的CPU计算权重系数,计算每个计划树中sortmergejoin操作的代价;若计划树中包括groupby操作,根据预设的网络传输权重系数、I/O权重系数和groupby操作的CPU计算权重系数,计算每个计划树中groupby操作的代价。4.根据权利要求3所述的方法,其特征在于,所述根据预设的I/O权重系数,计算每个计划树中scan操作的代价的步骤,包括:根据预设的I/O权重系数、作为scan操作对象的表的行总数、以及数据查询系统的节点数,计算每个计划树中scan操作的代价。5.根据权利要求3所述的方法,其特征在于,所述根据预设的filter操作的CPU计算权重系数,计算每个计划树中filter操作的代价的步骤,包括:根据预设的filter操作的CPU计算权重系数、以及作为filter操作对象的表的行总数,计算每个计划树中filter操作的代价。6.根据权利要求3所述的方法,其特征在于,所述根据预设的project操作的CPU计算权重系数,计算每个计划树中project操作的代价的步骤,包括:根据预设的project操作的CPU计算权重系数、作为project操作对象的表的行总数、以及根据所述查询请求从作为project操作对象的表中选择行的概率,计算每个计划树中project操作的代价。7.根据权利要求6所述的方法,其特征在于,通过以下方式确定根据所述查询请求从作为project操作对象的表中选择行的概率:根据预先存储的各个表的列信息,确定根据所述查询请求中每一个条件表达式从作为project操作对象的表中选择行的概率;所述列信息包括每一列去重后的行总数;根据所述查询请求中条件表达式间的运算符,确定根据所述查询请求从作为project操作对象的表中选择行的概率。8.根据权利要求7所述的方法,其特征在于,若表中的列为数据列,所述列信息还包括:最大值和最小值。9.根据权利要求7或8所述的方法,其特征在于,所述根据所述查询请求中条件表达式间的运算符,确定根据所述查询请求从作为project操作对象的表中选择行的概率的步骤,包括:若所述查询请求中条件表达式间的运算符为且and,则确定根据所述查询请求从作为project操作对象的表中选择行的概率为:根据and两侧的条件表达式选择行的概率的乘积;若所述查询请求中条件表达式间的运算符为或or,则确定根据所述查询请求从作为project操作对象的表中选择行的概率为:根据or两侧的条件表达式选择根据的概率的和减去根据or两侧的条件表达式选择行的概率乘积。10.根据权利要求3所述的方法,其特征在于,所述根据预设的网络传输权重系数和broatcastjoin操作的CPU计算权重系数,计算每个计划树中broatcastjoin操作的代价的步骤,包括:根据预设的网络传输权重系数、broatcastjoin操作的CPU计算权重系数、broatcastjoin操作的join关系中左表查询结果的行总数、broatcastjoin操作的join关系中右表查询结果的行总数、以及数据查询系统的节点数,计算每个计划树中broatcastjoin操作的代价。11.根据权利要求3所述的方法,其特征在于,所述根据预设的网络传输权重系数、I/O权重系数和shufflehashjoin操作的CPU计算权重系数,计算每个计划树中shufflehashjoin操作的代价的步骤,包括:根据预设的网络传输权重系数、I/O权重系数、shufflehashjoin操作的join关系中左表查询结果的行总数、以及shufflehashjoin操作的join关系中左表的映射任务maptask的个数,计算每个计划树中shufflehashjoin操作的左代价;根据预设的网络传输权重系数、I/O权重系数、shufflehashjoin操作的join关系中右表查询结果的行总数、以及shufflehashjoin操作的join关系中右表的maptask的个数,计算每个计划树中shufflehashjoin操作的右代价;根据计算得到的每个计划树中shufflehashjoin操作的左代价和右代价、预设的shufflehashjoin操作的CPU计算权重系数、shufflehashjoin操作的join关系中左表查询结果的行总数、以及shufflehashjoin操作的join关系中右表查询结果的行总数,计算每个计划树中shufflehashjoin操作的代价。12.根据权利要求3所述的方法,其特征在于,所述根据预设的网络传输权重系数、I/O权重系数和sortmergejoin操作的CPU计算权重系数,计算每个计划树中sortmergejoin操作的代价的步骤,包括:根据预设的网络传输权重系数、I/O权重系数、sortmergejoin操作的CPU计算权重系数、sortmergejoin操作的join关系中左表查询结果的行总数、以及sortmergejoin操作的join关系中左表的maptask的个数,计算每个计划树中sortmergejoin操作的左代价;根据预设的网络传输权重系数、I/O权重系数、sortmergejoin操作的CPU计算权重系数、sortmergejoin操作的join关系中右表查询结果的行总数、以及sortmergejoin操作的join关系中右表的maptask的个数,计算每个计划树中sortmergejoin操作的右代价;根据计算得到的每个计划树中sortmergejoin操作的左代价和右代价、预设的I/O权重系数、sortmergejoin操作的join关系中左表查询结果的行总数、以及sortmergejoin操作的join关系中右表查询结果的行总数,计算每个计划树中sortmergejoin操作的代价。13.根据权利要求3所述的方法,其特征在于,所述根据预设的网络传输权重系数、I/O权重系数和groupby操作的CPU计算权重系数,计算每个计划树中groupby操作的代价的步骤,包括:根据预设的网络传输权重系数、I/O权重系数、groupby操作中进行排序的CPU计算权重系数、作为groupby操作对象的表的行总数、以及作为groupby操作对象的表的maptask的个数,计算每个计划树中groupby操作中进行shuffle和排序的代价;根据计算得到的每个计划树中groupby操作中进行shuffle和排序的代价、预设的groupby操作中进行聚合的CPU计算权重系数、作为groupby操作对象的表的行总数、以及合并器reducer的个数,计算得到每个计划树中groupby操作的代价。14.根据权利要求2所述的方法,其特征在于,所述根据得到的每个计划树中每一操作的代价,确定每个计划树的代价的步骤,包括:对于每一计划...

【专利技术属性】
技术研发人员:张敢
申请(专利权)人:杭州海康威视数字技术股份有限公司
类型:发明
国别省市:浙江,33

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

1