当前位置: 首页 > 专利查询>浙江大学专利>正文

基于数据量的查询连接方法技术

技术编号:10217389 阅读:204 留言:0更新日期:2014-07-16 15:07
本发明专利技术公开了一种基于数据量的查询连接方法。该方法在大数据实时查询中深入考虑列式文件读取等特性来进行代价估算,确保生成最佳的连接顺序,其主要包括:首先进行元数据服务器的构建工作;然后完成统计信息的收集;其次通过查询元数据服务器获取参与连接的各表的相关统计信息;接着根据统计信息进行选择度及数据量等相关参数的估算工作;最后通过计算各个执行计划相应代价找出最佳的连接顺序。该方法可提升代价估计的准确性,从而保证找到执行计划为最优,有效提高整体查询的效率。

【技术实现步骤摘要】
基于数据量的查询连接方法
本专利技术涉及大数据实时查询优化
,尤其涉及一种基于数据量的查询连接方法。
技术介绍
大数据实时查询是重要的大数据技术,现有的大数据查询系统有GoogleDremel、ClouderaImpala、BerkeleyShark、ApacheDrill等。大数据实时查询一般采用分布式计算架构,由于弱化了对事务等功能的支持,所以相对于关系型数据库集群具有更高的可扩展性。同时由于大数据实时查询能很好的满足实时查询的用户需求,因此其在互联网、智慧城市等领域有广阔的应用空间。多连接顺序查询优化是数据库管理系统的重要组成部分,在大数据实时查询
中同样具备不可替代的重要性。其通过采用一定的优化方法,不断遍历执行计划的搜索空间,找出最佳的连接顺序,以生成最佳的执行计划,从而提升大数据查询系统的性能,满足用户查询的实时性需求。由于代价估计是多连接顺序查询优化过程中非常重要的部分,能否给出一种有效的查询代价估计方法是查询优化有效实现的关键。传统的代价估计方法是一种基于表基数的方法,通过该方法能够有效的解决传统代价估算问题,从而保证找到符合代价模型的最佳执行计划。但在分布式数据库系统或数据仓库中,存在以列式文件格式存储的数据表,该格式文件是为了优化底层数据进行读取时的I/O性能及减少数据传输数据量,以RCFile文件为例,该文件是一种先按行横向切分然后按列纵向切分的文件格式,其将仅读取和传输所需的数据列。在对有列式文件格式存储的数据表参与连接时,采用传统基于表基数的代价估计方法进行估算时,其结果可能会产生严重的偏差,进而导致连接顺序优化算法找出符合代价模型的执行计划并非为最佳,即找到的连接顺序并非为最优,以致使得整个查询延迟更高。
技术实现思路
本专利技术要解决的技术问题是如何确保大数据实时查询系统进行多连接顺序优化时提升其代价估计的准确性,从而提升查询整体的效率。为了解决上述传统基于表基数进行代价估算存在的问题,本专利技术提出了基于数据量的多连接查询代价估计方法,考虑了用户提交的查询中参与连接的部分关系可能以列式文件存储,通过深入考虑列式文件读取等特性,增加更细粒度的统计信息,利用每个字段的平均长度以估算查询的连接中间结果大小,从而有效的确保代价估算的准确性。一种基于数据量的查询连接方法,包括:步骤1,向元数据服务器提交查询请求,获取参与连接的各表所对应的统计信息;步骤2,根据获取到的统计信息估算得到当前执行计划中所有表的数据量;步骤3,重复步骤1及步骤2,直至遍历执行计划的搜索空间,找出具有合适数据量使得查询代价最小的执行计划,按该执行计划中的连接顺序进行表的连接。其中执行计划的搜索空间是指所有执行计划所得到的表连接顺序的集合。本专利技术以数据量作为查询代价来确定多连接查询中连接的顺序,从而确保大数据实时查询系统进行多连接顺序优化时提升其代价估计的准确性,从而提升查询整体的效率。其中,元数据服务器构建方式为,选取关系型数据库并设计列级别的表模式,根据设计好的表模式在相应的关系型数据库中创建元数据库及表关系,得到元数据服务器。为了能够为查询系统提供表级别、分区级别和列级别等三种粒度的统计信息,设计相应的表模式需要符合适当的范式,同时在能够完成代价估计的前提下,尽量减少不必要的存储开销。元数据服务器中的统计信息为每张表所对应的统计信息,所述统计信息根据设计的表模式对表进行统计得到。统计信息的细粒度根据表模式的细粒度得到由于表模式为列级别模式,因此统计信息包括列级别的统计信息。所述关系型数据库为:MYSQL数据库,Derby数据库或Oracle数据库。根据企业用户及系统的实际需求,选取合适的关系型数据库作为大数据实时查询系统的元数据服务器。统计信息包括:列名、列中数据值的下界、列中数据值的上界、表中列数据为空的数量、表中列数据不同值的数量、列中字段数据的平均长度以及列中字段数据的最大长度、表或视图的总行数。元数据服务器以及统计信息在元数据服务器中的存储均在离线状态下完成。由于元数据服务器的构建及统计信息的收集都是离线完成,使得实际进行查询时进行统计信息的返回不需要耗费多少运行时开销,极大地降低了代价估计的时间延迟。在步骤2中,每个表的数据量根据该表所对应的选择度、字段平均数据量和表的总行数计算得到。选择度根据统计信息所得的列中数据值的下界、列中数据值的上界等统计信息以及连接查询中相关条件,其中一般用selectivity表示。选择度的估算方法为,根据查询中的查询条件及统计信息进行相应计算,得到表中满足查询条件的行在所要查询的对象集合中所占的比例。其中的对象集合为是表、视图或者中间结果的集合。数据量size的计算公式如下:selectivity表示查询的选择度,numsOfTableLine为表或视图的总行数,avgColSizei表示需要返回的表中第i列字段的平均数据量,j为表的列数。相较于传统基于表基数的估算方法,其不仅依赖于查询中间结果产生的行数大小,而且同时也将估算的数据量考虑在内,从而提升代价估算的准确性。本专利技术的优点包括:针对传统基于表基数的代价方法存在估算不准确的问题,深入考虑列式文件读取等特性,增加更细粒度的统计信息,有效提升了代价估算的准确性。通过元数据服务器存储和维护表相关统计信息,避免多次进行大量的分析工作,减少了运行时开销,提升了代价估计的效率。附图说明图1为本专利技术方法一个实施例基于数据量的查询连接方法总体流程图;图2为本专利技术当前实施例所采用的查询处理架构图;图3为本专利技术当前实施例中元数据服务器构建流程图;图4为本专利技术当前实施例中统计信息收集流程图;图5为本专利技术当前实施例中统计信息查询流程图;图6为本专利技术当前实施例中数据量估算流程图;图7为本专利技术当前实施例中连接顺序生成流程图。具体实施方式本专利技术提出了基于数据量的查询连接方法,在进行查询时对多连接查询进行代价估计,代价估计方法的总体流程如图1所示。其首先进行元数据服务器的构建工作;然后完成统计信息的收集;其次通过查询元数据服务器获取参与连接的各表的相关统计信息;接着根据统计信息进行选择度及数据量等相关参数的估算工作;最后采用基于数据量的估计方法计算各个执行计划相应代价找出最佳的连接顺序。为了更直观的介绍本专利技术提出的方法在查询优化中的作用,现给出查询处理的架构如图2所示,其阐述了基于数据量的代价估计模块与连接顺序生成模块之间的关系。其中,连接顺序生成模块中由相关优化方法进行执行计划搜索的工作,而基于数据量的代价估计模块主要由代价模型及MetaStore两部分组成,以完成代价估计的工作。对于用户提交的查询,经过解析后将由多连接顺序查询优化方法以完成顺序优化的工作,其在进行执行计划搜索的过程中,需要调用相关代价估计模块进行代价的估算工作,以确保找到符合给定代价模型的最佳连接顺序。本专利技术提出的基于数据量的多连接查询代价估计方法的步骤包括:在进行查询连接之前首先需要构建元数据服务器并将元数据服务器中的表中所存储的统计信息。关系型数据库并设计表模式,构建元数据服务器。为了基于数据量的代价估计方法能够得以高效实现,首先需要进行元数据服务器的构建工作,其流程如图3所示,具体步骤如下:根据企业用户及系统的实际需求,选取合适的关系型数据库(如M本文档来自技高网
...
基于数据量的查询连接方法

【技术保护点】
一种基于数据量的查询连接方法,其特征在于,包括:步骤1,向元数据服务器提交查询请求,获取参与连接的各表所对应的统计信息;步骤2,根据获取到的统计信息估算得到当前执行计划中所有表的数据量;步骤3,重复步骤1及步骤2,直至遍历执行计划的搜索空间,找出具有合适数据量使得查询代价最小的执行计划,按该执行计划中的连接顺序进行表的连接。

【技术特征摘要】
1.一种基于数据量的查询连接方法,其特征在于,包括:步骤1,向元数据服务器提交查询请求,获取参与连接的各表所对应的统计信息;步骤2,根据获取到的统计信息估算得到当前查询执行计划中所有表的数据量;步骤3,重复步骤1及步骤2,直至遍历查询执行计划的搜索空间,找出具有合适数据量使得查询代价最小的执行计划,按该执行计划中的连接顺序进行表的连接;步骤1中,元数据服务器构建方式为,选取关系型数据库并设计列级别的表模式,根据设计好的表模式在相应的关系型数据库中创建元数据库及表关系,构建元数据服务器;步骤2中,每个表的数据量根据该表所对应的选择度、字段平均数据量和表的总行数计算得到;选择度的估算方法为,根据查询中的查询条件及统计信息进行相应计算,得到表中满足查询条件的行在所要查询的对象集合中所占的比例;每张表数据量size的计算公式如下:

【专利技术属性】
技术研发人员:陈岭周强
申请(专利权)人:浙江大学
类型:发明
国别省市:浙江;33

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

1