一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种OLAP查询引擎动态cost评估方法及装置与流程

2022-04-30 16:35:31 来源:中国专利 TAG:

一种olap查询引擎动态cost评估方法及装置
技术领域
1.本发明涉及olap查询引擎领域,尤其是一种olap查询引擎动态cost评估方法及装置。


背景技术:

2.目前市面上主流的开源olap(on-line analytical processing,联机分析处理)查询引擎,包括hive、spark sql、presto、kylin、impala、druid、clickhouse、greeplum等,都是使用基于规则的方式来进行cost评估,如图1所示,目前存在以下问题:
3.1、准确性低:表的数据量、字段基数等信息对查询性能影响很大,目前基于规则的cost评估引擎无法利用这些信息对sql进行最优cost评估。
4.2、没有动态改进的能力:不具备自学习能力,无法动态学习查询记录,改进提升cost评估准确性。


技术实现要素:

5.为了解决目前基于规则的方式进行cost评估存在的上述问题,本发明提供一种olap查询引擎动态cost评估方法及装置,使olap查询引擎能够快速、准确的对输入的查询sql进行cost评估,生成最优执行计划。
6.为实现上述目的,本发明采用下述技术方案:
7.在本发明一实施例中,提出了一种olap查询引擎动态cost评估方法,该方法包括:
8.采集数据仓库中数据表的数据量和字段基数;同时记录历史查询sql和对应的查询时间;
9.对sql的执行时间进行离散处理,生成标签;同时将数据表的表信息、过滤字段、分析字段、时间分区、表数据量和分析字段基数,生成各自的特征编码;
10.利用已有的机器学习模型,对已有查询样本,根据提取的数据表的特征进行分类算法训练;
11.将olap查询引擎的执行计划转化为特征向量,输入机器学习模型中进行基数评估,从而获得数据表的预估查询时间。
12.进一步地,对sql的执行时间进行离散处理,生成标签,包括:
13.对sql的执行时间进行离散处理,并打上标签;
14.生成数据表的执行时间及对应的标签。
15.进一步地,将数据表的表信息、过滤字段、分析字段、时间分区、表数据量和分析字段基数,生成各自的特征编码,包括:
16.对数据表的表信息、过滤字段、分析字段和时间分区进行onehot编码,生成各自的特征编码,其中时间分区的特征编码长度为365*4,范围为n天,则第n位为1;
17.对数据表的数据量,通过其中i为表标识,n为表数据量,生成特征编码;
18.对数据表的分析字段基数,通过其中i为分析字段标识,n为分析字段基数,生成特征编码。
19.进一步地,根据正态分布的定义,对查询样本的异常数据进行丢弃处理。
20.在本发明一实施例中,还提出了一种olap查询引擎动态cost评估装置,该装置包括:
21.信息采集模块,用于采集数据仓库中数据表的数据量和字段基数;
22.日志查询模块,用于记录历史查询sql和对应的查询时间;
23.特征提取模块,用于对sql的执行时间进行离散处理,生成标签;同时将数据表的表信息、过滤字段、分析字段、时间分区、表数据量和分析字段基数,生成各自的特征编码;
24.模型训练模块,用于利用已有的机器学习模型,对已有查询样本,根据提取的数据表的特征进行分类算法训练;
25.cost评估模块,用于将olap查询引擎的执行计划转化为特征向量,输入机器学习模型中进行基数评估,从而获得数据表的预估查询时间。
26.进一步地,对sql的执行时间进行离散处理,生成标签,包括:
27.对sql的执行时间进行离散处理,并打上标签;
28.生成数据表的执行时间及对应的标签。
29.进一步地,将数据表的表信息、过滤字段、分析字段、时间分区、表数据量和分析字段基数,生成各自的特征编码,包括:
30.对数据表的表信息、过滤字段、分析字段和时间分区进行onehot编码,生成各自的特征编码,其中时间分区的特征编码长度为365*4,范围为n天,则第n位为1;
31.对数据表的数据量,通过其中i为表标识,n为表数据量,生成特征编码;
32.对数据表的分析字段基数,通过其中i为分析字段标识,n为分析字段基数,生成特征编码。
33.进一步地,根据正态分布的定义,对查询样本的异常数据进行丢弃处理。
34.在本发明一实施例中,还提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现前述olap查询引擎动态cost评估方法。
35.在本发明一实施例中,还提出了一种计算机可读存储介质,计算机可读存储介质存储有执行olap查询引擎动态cost评估方法的计算机程序。
36.有益效果:
37.1、本发明可以实时学习查询记录,更新评估模型,随着时间推移,学习样本越来越丰富,准确率会不断提升。
38.2、目前hive、sparksql、kylin、druid、clickhouse等olap查询引擎的cost评估目前还停留在规则计算的方式;本发明通过使用机器学习的方式来进行cost评估,可以做到更高的准确性,对数据仓库整体建模,考虑到表的数据量差异和字段基数等差异信息,评估准确性更高。
39.3、本发明实现简单将sql转换为特征向量,用机器学习cost评估引擎可以快速计算出sql对应的cost。
附图说明
40.图1是使用基于规则的方式来进行cost评估的流程框图
41.图2是本发明olap查询引擎动态cost评估方法的流程框图;
42.图3是本发明基于机器学习的cost评估引擎的架构图;
43.图4是本发明特征生成的示意图;
44.图5是本发明依据的正态分布的示意图;
45.图6是本发明模型训练的示意图;
46.图7是本发明cost评估的流程示意图;
47.图8是本发明olap查询引擎动态cost评估装置结构示意图;
48.图9是本发明计算机设备结构示意图。
具体实施方式
49.下面将参考若干示例性实施方式来描述本发明的原理和精神,应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
50.本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
51.根据本发明的实施方式,提出了一种olap查询引擎动态cost评估方法及装置,通过机器学习方式,对olap数据仓库进行整体建模,从而准确评估查询sql对应的cost:
52.1、具备动态学习能力:机器学习cost评估引擎可以动态学习查询记录,实时优化模型,不断提升评估准确度;
53.2、准确性高:机器学习cost评估引擎通过对数据仓库整体建模,能学习到表的数据量和字段基数等信息差异,达到更高的准确性。
54.3、实现简单:通过学习历史查询sql的消耗时间,对olap数据仓库整体建模,快速实现一个olap数据仓库的sql查询时间预估模型。
55.下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
56.图2是本发明olap查询引擎动态cost评估方法的流程框图。如图2所示,主要涉及到信息采集、日志查询、机器学习建模以及cost评估。具体流程如下:
57.1、历史查询日志
58.记录历史查询sql和对应的查询耗时。
59.2、表信息采集器
60.采集数据仓库中数据表的两个信息:数据量和字段基数。
61.3、机器学习cost评估引擎实现
62.图3是本发明基于机器学习的cost评估引擎的架构图。如图3所示,具体实现如下:
63.(1)特征提取
64.标签:
65.对sql的执行时间进行离散处理,生成标签,如下表1:
66.表1
67.执行时间标签0-3s13-5s25-10s310-60s4>60s5
68.特征生成:
69.图4是本发明特征生成的示意图。如图4所示,对数据表的表信息、过滤字段、分析字段、时间分区、表数据量和分析字段基数进行提取,生成各自的特征编码,最终得到特征向量。
70.假设数据仓库有三张表a、b、c;
71.a有字段:a1、a2,b有字段:b1、b2;c有字段:c1、c2;
72.(a)表信息:特征编码
73.进行onehot编码(one-hot编码:独热编码,又称为一位有效编码,主要是采用n位状态寄存器来对n个状态进行编码,每个状态都由它独立的寄存器位,并且在任意时候只有一位有效),得到:a[001] b[010] c[100];
[0074]
(b)过滤字段:特征编码
[0075]
进行onehot编码,得到:a1[000001] a2[000010] b1[000100] b2[001000] c1[010000] c2[100000];
[0076]
(c)分析字段:特征编码
[0077]
进行onehot编码,得到:a1[000001] a2[000010] b1[000100] b2[001000] c1[010000] c2[100000];
[0078]
(d)时间分区:特征编码
[0079]
进行onehot编码,向量长度365*4,其中365:一年365天,4:四位日期,如10月10日,1010,时间分区范围为n天,则第n位为1,得到:[000000000000000000000001];
[0080]
(e)表数据量:特征编码
[0081]
其中i为表标识,n为表数据量;
[0082]
(f)分析字段基数:特征编码
[0083]
其中i为分析字段标识,n为分析字段基数。
[0084]
(2)异常数据处理:丢弃异常数据
[0085]
如图5所示,根据正态分布的定义可知,距离平均值3δ之外的概率为p(|x-μ|》3δ)《=0.003,这属于极小概率事件,在默认情况下可以认定,距离超过平均值3δ的查询样本是不存在的。因此,当查询样本距离平均值大于3δ,则认定该查询样本为异常值。
[0086]
(3)模型训练
[0087]
如图6所示,利用已有的机器学习模型,对已有查询样本,根据提取的数据表的特征进行分类算法训练。
[0088]
这里的分类算法是现有算法,常用的分类算法包括:nbc算法、lr算法、id3决策树算法、c4.5决策树算法、c5.0决策树算法、svm算法、knn算法和ann算法等。
[0089]
机器学习模型是自己创建的模型,由具体使用的分类算法决定。
[0090]
(4)cost评估
[0091]
如图7所示,将olap查询引擎的执行计划(通过提取上述表数据量、字段基数等特征)转化为特征向量,输入机器学习模型中进行基数评估,返回评估结果,从而获得数据表的预估查询时间。
[0092]
根据olap查询引擎的执行计划,可以了解到如数据表的查询顺序、数据查询操作的操作类型、哪些索引可以被命中、哪些索引实际会命中、每个数据表有多少行记录被查询等信息。
[0093]
需要说明的是,尽管在上述实施例及附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
[0094]
为了对上述olap查询引擎动态cost评估方法进行更为清楚的解释,下面结合一个具体的实施例来进行说明,然而值得注意的是该实施例仅是为了更好地说明本发明,并不构成对本发明不当的限定。
[0095]
实施例:
[0096]
步骤1:对数据仓库中的两张表t_sys_member和t_member_order_detail_d的数据量和字段基数进行采集,获得t_sys_member数据量205万条,字段30个,t_member_order_detail_d数据量1672万条,字段46个。
[0097]
步骤2:对上述两张表进行特征提取,对执行时间进行离散处理,并打上标签,得到表t_sys_member查询时间1.2s,打上标签1,得到表t_member_order_detail_d查询时间2.3s,打上标签2。
[0098]
步骤3:对表t_sys_member的表信息、过滤字段member_id、分析字段sex、时间分区stastis_date、表数据量205万和字段基数30个,生成各自的特征编码;对表t_member_order_detail_d的表信息、过滤字段member_id、分析字段city、时间分区stastis_date、表数据量1672万和字段基数46个,生成各自的特征编码。
[0099]
步骤4:利用已有的机器学习模型对已有查询样本根据特征进行分类算法训练。
[0100]
步骤5:将查询引擎的执行计划转化为机器学习模型进行基础评估,从而获得表t_sys_member预估查询时间1.3s,表t_member_order_detail_d预估查询时间2.5s。
[0101]
基于同一发明构思,本发明还提出一种olap查询引擎动态cost评估装置。该装置的实施可以参见上述方法的实施,重复之处不再赘述。以下所使用的术语“模块”,可以是实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0102]
图8是本发明olap查询引擎动态cost评估装置结构示意图。如图8所示,该装置包括:
[0103]
信息采集模块101,用于采集数据仓库中数据表的数据量和字段基数。
[0104]
日志查询模块102,用于记录历史查询sql和对应的查询时间。
[0105]
特征提取模块103,用于对sql的执行时间进行离散处理,生成标签;同时将数据表的表信息、过滤字段、分析字段、时间分区、表数据量和分析字段基数,生成各自的特征编码;具体如下:
[0106]
对sql的执行时间进行离散处理,并打上标签,生成数据表的执行时间及对应的标签;
[0107]
对数据表的表信息、过滤字段、分析字段和时间分区进行onehot编码,生成各自的特征编码,其中时间分区的特征编码长度为365*4,范围为n天,则第n位为1;
[0108]
对数据表的数据量,通过其中i为表标识,n为表数据量,生成特征编码;
[0109]
对数据表的分析字段基数,通过其中i为分析字段标识,n为分析字段基数,生成特征编码。
[0110]
根据正态分布的定义,对查询样本的异常数据进行丢弃处理。
[0111]
模型训练模块104,用于利用已有的机器学习模型,对已有查询样本,根据提取的数据表的特征进行分类算法训练。
[0112]
cost评估模块105,用于将olap查询引擎的执行计划转化为特征向量,输入机器学习模型中进行基数评估,从而获得数据表的预估查询时间。
[0113]
应当注意,尽管在上文详细描述中提及了olap查询引擎动态cost评估装置的若干模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
[0114]
基于前述发明构思,如图9所示,本发明还提出一种计算机设备200,包括存储器210、处理器220及存储在存储器210上并可在处理器220上运行的计算机程序230,处理器220执行计算机程序230时实现前述olap查询引擎动态cost评估方法。
[0115]
基于前述发明构思,本发明还提出一种计算机可读存储介质,计算机可读存储介质存储有执行前述olap查询引擎动态cost评估方法的计算机程序。
[0116]
本发明提出的olap查询引擎动态cost评估方法及装置,具备以下优点:
[0117]
1、动态学习:可以实时学习查询记录,更新评估模型,随着时间推移,学习样本越来越丰富,准确率会不断提升。
[0118]
2、填补业内空白、提升准确性:目前hive、sparksql、kylin、druid、clickhouse等olap计算引擎的cost评估目前还停留在规则计算的方式,通过使用机器学习的方式来进行cost评估,可以做到更高的准确性,对数据仓库整体建模,考虑到表的数据量差异和字段基数等差异信息,评估准确性更高。
[0119]
3、实现简单:简单将sql转换为特征向量,用机器学习cost计算引擎可以快速计算sql对应的cost。
[0120]
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能
组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包含的各种修改和等同布置。
[0121]
对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献