执行计划的优化方法、装置、计算机设备和存储介质制造方法及图纸

技术编号:22238159 阅读:23 留言:0更新日期:2019-10-09 18:03
本发明专利技术公开了一种执行计划的优化方法装置、计算机设备和存储介质,该方法包括:获取查询请求,解析出查询请求所采用的操作方式以及对应的场景,其中操作方式包括全外连接、联合、左外连接、右外连接以及内连接;结合操作方式以及场景,将汇总和/或limit操作按照预设的策略下推,生成执行计划;按照执行计划在数据库中执行相应操作,输出查询结果。本发明专利技术通过将汇总、limit等操作下推到数据库中,充分利用数据库的优势,提升了查询统计性能以及资源利用率,解决复杂的数据分析带来的延时问题,避免了druid这类数据库在高基数汇总时存在的限制,数据分析支持SQL,易用性较好且支持复杂的数据分析场景,数据存储支持分布式的支持横向扩展、高并发的查询。

Optimizing methods, devices, computer equipment and storage media for execution plans

【技术实现步骤摘要】
执行计划的优化方法、装置、计算机设备和存储介质
本专利技术涉及
,特别涉及一种执行计划的优化方法、装置、计算机设备和存储介质。
技术介绍
在互联网企业,对海量数据的数据分析越来越重视,涉及的业务场景也越来越复杂。如果直接对亿级以上的明细数据进行汇总统计,存储代价和计算代价都非常大。现有的执行计划优化方案一般是将谓词下推(predicatepushdown),即将过滤条件尽可能的下推到数据库中,从而使物理执行跳过无关数据,加速执行过程,但是这种方案一般适用于普通数据库。在大数据olap分析领域,数据量特别巨大,甚至可以达到千亿级。因此出现了druid、pinot等一些MOLAP数据库,这些数据库都会对维度进行倒排索引,因此在过滤上特别高效,而且可以适用于任何维度组合,这个和传统数据库的索引有着明显区别。同时这类数据库也会对汇总、limit等算法进行优化。例如druid在对单维度进行分组汇总时,可以在每个历史节点都进行下推操作,使得性能大为提升。在进行olap(联机分析处理)分析时,越来越多的数据分析产品使用spark、presto、drill等SQL引擎,这些引擎可以和众多的数据存储进行整合,例如hive、mysql、hbase、ES等,而且可以在不同的数据源之间进行关联操作。同时也可以和druid、pinot、clickhouse等olap数据库进行整合,通过标准SQL语句来分析汇总olap数据库中的数据。对于单表汇总查询,一般对执行计划进行解析,然后将其翻译成相应的查询语句,在解析过程中,尽量将过滤、汇总、limit等下推到olap数据库中,以充分利用olap数据库的优势。在进行多表join和union等操作时,SQL引擎一般采用的执行计划优化方案,包括mapjoin、hashedjoin、nestedloopbroadcast、sortmerge等算法。这些算法一般只是将过滤条件下推到olap数据库中,不会将limit下推到olap数据库中,因此会从olap数据库中返回全量汇总数据,这样会导致数据库的计算量巨大且不能充分利用druid等数据库的优势等问题。
技术实现思路
为了解决现有技术的问题,本专利技术实施例提供了一种执行计划的优化方法、装置、计算机设备和存储介质,以克服现有技术中数据库中返回全量汇总数据导致数据库计算量大、增加网络传输压力以及响应时间长等问题。为解决上述一个或多个技术问题,本专利技术采用的技术方案是:第一方面,提供了一种执行计划的优化方法,该方法包括如下步骤:获取查询请求,解析出所述查询请求所采用的操作方式以及对应的场景,其中所述操作方式包括全外连接、联合、左外连接、右外连接以及内连接;结合所述操作方式以及所述场景,将汇总和/或limit操作按照预设的策略下推,生成执行计划;按照所述执行计划在数据库中执行相应操作,输出查询结果。进一步的,当所述操作方式为全外连接或联合,所述场景为对汇总值不进行排序时,所述将汇总和/或limit操作按照预设的策略下推,生成执行计划包括:对同期结果集以及本期结果集按照分析维度的组合进行排序后,将所述limit操作下推到数据库中。进一步的,当所述操作方式为全外连接或联合,所述场景为对维度进行排序时,所述将汇总和/或limit操作按照预设的策略下推,生成执行计划包括:检验排序字段与分析维度是否一致,若不一致,则将所述排序字段设置为与所述分析维度一致,对所述维度重新进行排序后,将所述limit操作下推到数据库中。进一步的,当所述操作方式为全外连接或联合,所述场景为对汇总值进行排序时,所述将汇总和/或limit操作按照预设的策略下推,生成执行计划包括:对汇总值进行排序的结果集进行汇总计算后,将所述汇总和所述limit操作均下推到数据库中,获取返回的第一结果集;将所述第一结果集中的维度值作为过滤条件传给其余结果集,获取返回的第二结果集;将所述第二结果集与所述第一结果集进行匹配,将匹配成功的结果补充至所述第一结果集中,生成最终的结果集。进一步的,当所述操作方式为左外连接,所述场景为对汇总值不进行排序或对维度进行排序或对左表中的汇总值进行排序时,所述将汇总和/或limit操作按照预设的策略下推,生成执行计划包括:将所述汇总操作、所述limit操作以及过滤操作直接下推到左表中,获取左表返回的结果集;将所述左表返回的结果集中的维度值作为过滤条件,传到右表中,将右表的汇总结果与所述左表返回的结果集进行匹配,生成最终的结果集。进一步的,当所述操作方式为左外连接,所述场景为对右表中的汇总值进行排序时,所述将汇总和/或limit操作按照预设的策略下推,生成执行计划包括:设置下推参数以及放大比例;根据所述下推参数判断是否满足下推的条件,若满足,则将所述limit操作中的limit值按照所述放大比例放大;将放大后的所述limit操作与排序操作下推到右表中,获取右表返回的结果集;将所述右表返回的结果集中的维度值作为过滤条件,传到左表中,将左表的汇总结果与所述右表返回的结果集进行匹配,生成最终的结果集。进一步的,当所述操作方式为右外连接,所述场景为对汇总值不进行排序或对维度进行排序或对右表中的汇总值进行排序时,所述将汇总和/或limit操作按照预设的策略下推,生成执行计划包括:将所述汇总操作、所述limit操作以及过滤操作直接下推到右表中,获取右表返回的结果集;将所述右表返回的结果集中的维度值作为过滤条件,传到左表中,将左表的汇总结果与所述右表返回的结果集进行匹配,生成最终的结果集。进一步的,当所述操作方式为右外连接,所述场景为对左表中的汇总值进行排序时,所述将汇总和/或limit操作按照预设的策略下推,生成执行计划包括:根据下推参数判断是否满足下推的条件,若满足,则将所述limit操作中的limit值按照预设的放大比例放大;将放大后的所述limit操作与排序操作下推到左表中,获取左表返回的结果集;将所述左表返回的结果集中的维度值作为过滤条件,传到右表中,将右表的汇总结果与所述左表返回的结果集进行匹配,生成最终的结果集。进一步的,当所述操作方式为内连接,所述场景为对汇总值不进行排序或对维度进行排序时,所述将汇总和/或limit操作按照预设的策略下推,生成执行计划包括:将排序字段设置为与分析维度一致,对左表和右表的结果集进行排序,并则将所述limit操作中的limit值按照预设的放大比例放大,将放大后的所述limit操作下推到数据库中。进一步的,当所述操作方式为内连接,所述场景为对汇总值进行排序时,所述将汇总和/或limit操作按照预设的策略下推,生成执行计划包括:将所述limit操作中的limit值按照预设的放大比例放大,将放大后的所述limit操作下推到对汇总值进行排序的表中,获取返回的第三结果集;将所述第三结果集中的维度值作为过滤条件传至另一个表中进行过滤汇总,获取返回的第四结果集;将所述第三结果集与所述第四结果集进行匹配,返回匹配成功的结果集。第二方面,提供了一种执行计划的优化装置,所述装置包括:数据解析模块,用于获取查询请求,解析出所述查询请求所采用的操作方式以及对应的场景,其中所述操作方式包括全外连接、联合、左外连接、右外连接以及内连接;计划生成模块,用于结合所述操作本文档来自技高网
...

【技术保护点】
1.一种执行计划的优化方法,其特征在于,所述方法包括如下步骤:获取查询请求,解析出所述查询请求所采用的操作方式以及对应的场景,其中所述操作方式包括全外连接、联合、左外连接、右外连接以及内连接;结合所述操作方式以及所述场景,将汇总和/或limit操作按照预设的策略下推,生成执行计划;按照所述执行计划在数据库中执行相应操作,输出查询结果。

【技术特征摘要】
1.一种执行计划的优化方法,其特征在于,所述方法包括如下步骤:获取查询请求,解析出所述查询请求所采用的操作方式以及对应的场景,其中所述操作方式包括全外连接、联合、左外连接、右外连接以及内连接;结合所述操作方式以及所述场景,将汇总和/或limit操作按照预设的策略下推,生成执行计划;按照所述执行计划在数据库中执行相应操作,输出查询结果。2.根据权利要求1所述的执行计划的优化方法,其特征在于,当所述操作方式为全外连接或联合,所述场景为对汇总值不进行排序时,所述将汇总和/或limit操作按照预设的策略下推,生成执行计划包括:对同期结果集以及本期结果集按照分析维度的组合进行排序后,将所述limit操作下推到数据库中。3.根据权利要求1或2所述的执行计划的优化方法,其特征在于,当所述操作方式为全外连接或联合,所述场景为对维度进行排序时,所述将汇总和/或limit操作按照预设的策略下推,生成执行计划包括:检验排序字段与分析维度是否一致,若不一致,则将所述排序字段设置为与所述分析维度一致,对所述维度重新进行排序后,将所述limit操作下推到数据库中。4.根据权利要求1或2所述的执行计划的优化方法,其特征在于,当所述操作方式为全外连接或联合,所述场景为对汇总值进行排序时,所述将汇总和/或limit操作按照预设的策略下推,生成执行计划包括:对汇总值进行排序的结果集进行汇总计算后,将所述汇总和所述limit操作均下推到数据库中,获取返回的第一结果集;将所述第一结果集中的维度值作为过滤条件传给其余结果集,获取返回的第二结果集;将所述第二结果集与所述第一结果集进行匹配,将匹配成功的结果补充至所述第一结果集中,生成最终的结果集。5.根据权利要求1或2所述的执行计划的优化方法,其特征在于,当所述操作方式为左外连接,所述场景为对汇总值不进行排序或对维度进行排序或对左表中的汇总值进行排序时,所述将汇总和/或limit操作按照预设的策略下推,生成执行计划包括:将所述汇总操作、所述limit操作以及过滤操作直接下推到左表中,获取左表返回的结果集;将所述左表返回的结果集中的维度值作为过滤条件,传到右表中,将右表的汇总结果与所述左表返回的结果集进行匹配,生成最终的结果集。6.根据权利要求1或2所述的执行计划的优化方法,其特征在于,当所述操作方式为左外连接,所述场景为对右表中的汇总值进行排序时,所述将汇总和/或limit操作按照预设的策略下推,生成执行计划包括:设置下推参数以及放大比例;根据所述下推参数判断是否满足下推的条件,若满足,则将所述limit操作中的limit值按照所述放大比例放大;将放大后的所述limit操作与排序操作下推到右表中,获取右表返回的结果集;将所述右表返回的结果集中的维度值作为过滤条件,传到左表中,将左表的汇总结果与所述右表返回的结果集进行匹配,生成最终的结果集。7.根据权利要求1或2所述的执行计划的优化方...

【专利技术属性】
技术研发人员:汪金忠孙迁赵云范东
申请(专利权)人:苏宁云计算有限公司
类型:发明
国别省市:江苏,32

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

1