CN107491508A - 一种基于循环神经网络的数据库查询时间预测方法 - Google Patents
一种基于循环神经网络的数据库查询时间预测方法 Download PDFInfo
- Publication number
- CN107491508A CN107491508A CN201710647281.3A CN201710647281A CN107491508A CN 107491508 A CN107491508 A CN 107491508A CN 201710647281 A CN201710647281 A CN 201710647281A CN 107491508 A CN107491508 A CN 107491508A
- Authority
- CN
- China
- Prior art keywords
- sequence
- inquiry plan
- inquiry
- run time
- neural network
- 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.)
- Granted
Links
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/2455—Query execution
-
- 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
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)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于循环神经网络的数据库查询时间预测方法。首先从数据库历史查询记录中抽取出查询计划,构成的原始数据,一条查询计划包含操作信息和运行时间;按照运行时间长短将原始数据分类,使得每类中的查询计划的数量相等;对查询计划进行特殊处理获得操作序列和运行时间序列;操作序列作为特征向量和运行时间序列作为标签,输入神经网络,训练并得到模型;针对待测的查询计划,重复步骤获得操作序列,输入模型,输出运行时间序列,完成对数据库查询时间的预测。本发明方法在关系型数据库查询时间预测上取得了良好的效果,模拟数据训练下模型的正确率高于78%。该方法可以用于解决查询优化、负载管理中的关键问题。
Description
技术领域
本发明涉及了一种深度学习领域的建模和特征提取方法,尤其是涉及了一种基于循环神经网络的数据库查询时间预测方法。
背景技术
随着数据库中数据量的与日俱增和查询的日益复杂,数据库管理面对极大的挑战。负载管理就是数据管理中面临的挑战之一。其要解决的核心问题就是查询执行时间的预测。该不该执行某条查询语句?如果要执行,什么时候执行?如果迟迟没有结束,该等待多久之后强制结束该查询?无法预计的长时间运行查询是计算机资源耗尽的罪魁祸首。如果在执行之前,查询的运行时间就能被确定,就可以取消执行无法在期望时间内完成的查询或者在计算机空闲时,不影响其他查询的情况下执行。但是由于数据库系统的复杂性和计算机资源的竞争,很难精确地估计不同关系操作的开销。因此,查询开销预测成为一个重要的研究问题。
近年来,针对查询开销的预测问题,研究人员提出了多种面向关系型数据库的查询开销预测方案。有些研究没有预测出真实的运行时间,而是估计了查询完成的百分比或者输出了一个任意单位的值来代表查询开销,类似于查询优化器的开销预测。有些研究需要运行时性能统计,这需要额外的开销去产生统计数据。
虽然上述的技术方案很大程度上解决了查询开销预测的问题,但是有两个问题并没有同时得到解决:第一,时间开销预估的结果是任意单位,很难映射到时间单位,欠缺参考性。第二,预测需要查询执行中的信息,无法在查询执行前就给出预测。
发明内容
为了解决背景技术中存在的问题,本发明的目的在于针对现有技术的不足,提供一种基于循环神经网络的数据库查询时间预测方法。
本发明首先设计了一种数据库查询计划中操作特征提取方法,并设计了神经网络的模型结构。
本发明解决其技术问题采用的技术方案如下:
对查询计划进行特殊处理,具体是提取查询计划中操作的关键特征,经过后序遍历,生成操作序列;再使用一种特殊的循环神经网络——LSTM(长短期记忆)神经网络来建立模型,预测运行时间。
所述方法的具体步骤如下:
(1)首先从数据库历史查询记录中抽取出查询计划构成原始数据,一条查询计划包含了多个操作及其对应的运行时间;
查询计划是指数据库中一个查询语句转换成具体的底层运行的计划,是由数据库查询优化器生成的。查询计划是由多个操作作为节点组成的多叉树。
同一查询语句可能会有不同的查询计划,其执行结果相同,执行时间不同。
(2)按照查询计划的运行时间长短将原始数据分类,使得每类中包含的查询计划的数量相等;
即按照运行时间长短顺序划分区间,将所有查询计划根据自身的运行时间归类到各个区间中,使得每个区间中的查询计划的数量均匀;
(3)对查询计划进行特殊处理获得操作序列,并将查询计划中的所有运行时间按照操作序列中的顺序对应排列组成运行时间序列;
(4)将操作序列作为特征向量和运行时间序列作为标签,输入神经网络训练并得到模型;
(5)针对待测的查询计划,重复步骤(3)获得其对应的操作序列,再输入到步骤(4)获得的神经网络模型中,输出与操作序列对应的运行时间序列,完成数据库查询时间的预测。
所述步骤(3)具体采用如下方式将一个查询计划处理成特定格式:对于一个查询计划中的各个操作,经过后序遍历生成操作序列;遍历生成操作序列时,对于查询计划中的各个操作提取关键特征,将每个操作转换成一个向量v,向量包含五个部分,第一部分n1代表操作的类型,第二部分n2代表操作在数据库中指定对应的源表,第三部分n3代表操作在数据库中指定对应源表的列,第四部分n4代表操作对应输出结果的平均宽度,第五部分n5代表操作在数据库中对应数据的分布情况。
向量v的前两个部分描述了查询计划的结构,后三个部分跟踪了查询计划对应的数据规模。
所述步骤(3)用一个操作序列Sop={v0,...,vm}表示一个查询计划的操作信息,vi是操作序列Sop中第i个操作对应的向量,m表示查询计划中操作的总数。
所述步骤(4)中,神经网络模型的第一层是输入层,中间两层是隐层,最后一层是输出层,两层隐层结构均为LSTM层,隐层所用的激活函数是sigmoid,输出层的激活函数是softmax,两个隐层都是100个节点,损失函数是交叉熵代价函数。
本发明编码采用后序遍历,将具有复杂结构的查询计划中操作信息转换成特征向量,并尽可能保留其影响运行时间的信息。使用一种特殊的循环神经网络——LSTM(长短期记忆)神经网络来建立模型。这对于具有复杂结构的查询计划能够大大提到查询效率和查询准确率。
本发明具有的有益效果是:对于一个特定的查询计划,在计划实际执行前,模型就能够产生该查询计划实际运行时间的预测。本发明比现有数据库的查询优化器产生的查询计划时间开销预估结果(任意单位)更具有参考性,也优于需要在执行开始之后才能预测的查询进度指示器。
本发明不管是短时间运行的查询或者是长时间运行的查询,模型的预测结果都较为准确。
附图说明
图1是本发明方法实施步骤流程图。
图2是一个查询计划的示意图。
图3是神经网络结构的示意图。
具体实施方式
现结合具体实施和示例对本发明的技术方案作进一步说明。
如图1所示,本发明具体实施例及其实施工作过程如下:
步骤1:首先从数据库历史查询记录中抽取出查询计划,构成的原始数据,一条查询计划包含操作信息和运行时间,如图1中所示的抽取过程。
步骤2:按照查询计划的运行时间长短将原始数据分类,使得每类中的查询计划的数量相等,即数据集覆盖了短时间查询和长时间查询。将数据集随机打乱后划分为80%和20%。80%的数据作为训练集,20%的数据作为测试集。
步骤3:对查询计划进行特殊处理获得操作序列和运行时间序列。将查询计划编码成特定格式,采用后序编码,提取特征并将其编码成一个操作序列。
图2展示了一个具体查询计划的实例,具体树结构关系如下:
SELECT T1.c
FROM T1,T2,T3
WHERE T1.k=T2.fk and T1.fk=T3.k
and T1.a<100and T3.b>20
GROUP BY T1.c
其中,T1,T2,T3分别表示了数据库中的源表,即查询计划的各个操作可能用到的源表;T1.c表示T1表的c列,T1.a与T3.b同理,分别代表了T1表的a列与T3表b列;T1.k表示T1表的主键,同理T3.k表示T3表的主键;T2.fk表示了T2表的外键,同理T1.fk表示了T1表的外键。SELECT、FROM、WHERE、and、GROUP BY等都是SQL(结构化查询语言)中的关键词。
查询计划本质上是一棵以各种类型的操作为节点的多叉树,每个节点上都包含该操作对应的信息。如图2中,Group、Sort、Nested Loop、Hash Join、Seq Scan、Hash、IndexScan、Materialize等都是操作类型,图2中节点旁边的Group by T1.k等都是该操作对应的信息之一。例如图2中左侧Hash join节点,代表的是连接类型下的一种操作,其连接的条件是T1.k=T2.fk。
在将查询计划编码成操作序列时,为了保留查询计划的结构信息,本实施采用后序遍历,将其编码成一个操作序列Sop={v0,...,vm}。
图2中查询计划的操作序列是:
在步骤3的过程中,将每个操作转换成向量。向量包含5个部分:
1)第一部分n1代表操作的类型,例如Hash Join,Nested Loop等。总共有34种操作类型,因此n1是一个34位的向量,该操作类型对应的位设置为1,其他设置为0。
2)第二部分n2代表操作对应的源表。假设数据库有n个表,那n2就有n位。查询树的叶子节点带有源表信息。
例如,图2中最左边叶子节点在数据库中对应的源表是T2,因此该叶子节点操作的n1中T2对应的位被置为1,其他位被置为0。子节点的源表信息会传递给父节点。
例如,图2中Hash join查询操作的源表是T1和T2,分别来自它的左右子节点。
3)第三部分n3代表操作对应源表中涉及的列。假设数据库中所有表总共m列,那n3就有m位。
举个例子,图2中Hash join涉及表T1中key列和表T2中的foreign key列。那么这两列对应的位就会被设置为1,其余的位设置为0。
4)第四部分n4代表操作输出结果的平均宽度。将宽度的范围划分成Q个区间,那么n4就有Q位。结果落在哪个区域内,该区域对应的位就设置为1,其余位设置为0。注意,区间划分的原则是保证数据分布的均匀性。
例如,模型要预测子计划的开销。假设过程产生了时间开销c′。S3的时间开销实际上是c2+c′。
步骤4:操作序列作为特征向量和运行时间序列作为标签,输入神经网络,训练并得到模型。如图3所示,神经网络模型的第一层是输入层,中间两层是隐层,最后一层是输出层,两层隐层结构均为LSTM层,隐层所用的激活函数是sigmoid,输出层的激活函数是softmax,两个隐层都是100个节点,损失函数是交叉熵代价函数。
循环网络模型的输入张量和输出张量都是3个维度,包括样本数量、特征长度和时间步。定义样本数量大小(n_samples)为Ns,输入向量长度(dim_input)为Di,输出向量长度(dim_output)为Do,时间步(time_steps)为Ts。
步骤5:针对待测的查询计划,重复步骤(3)获得其对应的操作序列,再输入到步骤(4)获得的神经网络模型中,输出与操作序列对应的运行时间序列,完成数据库查询时间的预测。
本发明方法在关系型数据库查询时间预测上取得了良好的效果,模拟数据训练下模型的正确率高于78%。该方法可以用于解决查询优化、负载管理中的关键问题。
Claims (4)
1.一种基于循环神经网络的数据库查询时间预测方法,其特点在于:所述方法的具体步骤如下:
(1)首先从数据库历史查询记录中抽取出查询计划构成原始数据,一条查询计划包含了多个操作及其对应的运行时间;
(2)按照查询计划的运行时间长短将原始数据分类,使得每类中包含的查询计划的数量相等;
(3)对查询计划进行特殊处理获得操作序列,并将查询计划中的所有运行时间按照操作序列中的顺序对应排列组成运行时间序列;
(4)将操作序列作为特征向量和运行时间序列作为标签,输入神经网络训练并得到模型;
(5)针对待测的查询计划,重复步骤(3)获得其对应的操作序列,再输入到步骤(4)获得的神经网络模型中,输出与操作序列对应的运行时间序列,完成数据库查询时间的预测。
2.根据权利要求1所述的一种基于循环神经网络的数据库查询时间预测方法,其特征在于:所述步骤(3)具体采用如下方式将一个查询计划处理成特定格式:对于一个查询计划中的各个操作,经过后序遍历生成操作序列;遍历生成操作序列时,对于查询计划中的各个操作提取关键特征,将每个操作转换成一个向量v,向量包含五个部分,第一部分n1代表操作的类型,第二部分n2代表操作在数据库中指定对应的源表,第三部分n3代表操作在数据库中指定对应源表的列,第四部分n4代表操作对应输出结果的平均宽度,第五部分n2代表操作在数据库中对应数据的分布情况。
3.根据权利要求1所述的一种基于循环神经网络的数据库查询时间预测方法,其特征在于:所述步骤(3)用一个操作序列Sop={v0,...,vm}表示一个查询计划的操作信息,vi是操作序列Sop中第i个操作对应的向量,m表示查询计划中操作的总数。
4.根据权利要求1所述的一种基于循环神经网络的数据库查询时间预测方法,其特征在于:所述步骤(4)中,神经网络模型的第一层是输入层,中间两层是隐层,最后一层是输出层,两层隐层结构均为LSTM层,隐层所用的激活函数是sigmoid,输出层的激活函数是softmax,两个隐层都是100个节点,损失函数是交叉熵代价函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710647281.3A CN107491508B (zh) | 2017-08-01 | 2017-08-01 | 一种基于循环神经网络的数据库查询时间预测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710647281.3A CN107491508B (zh) | 2017-08-01 | 2017-08-01 | 一种基于循环神经网络的数据库查询时间预测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107491508A true CN107491508A (zh) | 2017-12-19 |
CN107491508B CN107491508B (zh) | 2020-05-26 |
Family
ID=60644735
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710647281.3A Active CN107491508B (zh) | 2017-08-01 | 2017-08-01 | 一种基于循环神经网络的数据库查询时间预测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107491508B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110866033A (zh) * | 2018-08-28 | 2020-03-06 | 北京国双科技有限公司 | 一种用于预测查询资源占用量的特征确定方法及装置 |
CN111127825A (zh) * | 2019-12-25 | 2020-05-08 | 深圳供电局有限公司 | 环境预测方法和装置、电子设备 |
CN112395311A (zh) * | 2019-08-13 | 2021-02-23 | 阿里巴巴集团控股有限公司 | 一种请求的处理时长的预测方法及装置 |
CN113111058A (zh) * | 2020-01-10 | 2021-07-13 | 华为技术有限公司 | 一种数据库的处理方法和装置 |
CN114218287A (zh) * | 2021-12-30 | 2022-03-22 | 北京诺司时空科技有限公司 | 一种面向时序数据库的查询时间预测方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140236578A1 (en) * | 2013-02-15 | 2014-08-21 | Nec Laboratories America, Inc. | Question-Answering by Recursive Parse Tree Descent |
CN105740312A (zh) * | 2014-12-27 | 2016-07-06 | 达索系统公司 | 使数据库查询形成聚类以用于运行时间预测 |
CN105930413A (zh) * | 2016-04-18 | 2016-09-07 | 北京百度网讯科技有限公司 | 相似度模型参数的训练方法、搜索处理方法及对应装置 |
CN106886846A (zh) * | 2017-04-26 | 2017-06-23 | 中南大学 | 一种基于长短期记忆循环神经网络的银行网点备付金预测方法 |
CN106909649A (zh) * | 2017-02-23 | 2017-06-30 | 同济大学 | 基于循环神经网络的大数据轮廓查询处理方法 |
-
2017
- 2017-08-01 CN CN201710647281.3A patent/CN107491508B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140236578A1 (en) * | 2013-02-15 | 2014-08-21 | Nec Laboratories America, Inc. | Question-Answering by Recursive Parse Tree Descent |
CN105740312A (zh) * | 2014-12-27 | 2016-07-06 | 达索系统公司 | 使数据库查询形成聚类以用于运行时间预测 |
CN105930413A (zh) * | 2016-04-18 | 2016-09-07 | 北京百度网讯科技有限公司 | 相似度模型参数的训练方法、搜索处理方法及对应装置 |
CN106909649A (zh) * | 2017-02-23 | 2017-06-30 | 同济大学 | 基于循环神经网络的大数据轮廓查询处理方法 |
CN106886846A (zh) * | 2017-04-26 | 2017-06-23 | 中南大学 | 一种基于长短期记忆循环神经网络的银行网点备付金预测方法 |
Non-Patent Citations (1)
Title |
---|
毕里缘 等: ""基于循环神经网络的数据库查询开销预测"", 《软件学报》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110866033A (zh) * | 2018-08-28 | 2020-03-06 | 北京国双科技有限公司 | 一种用于预测查询资源占用量的特征确定方法及装置 |
CN110866033B (zh) * | 2018-08-28 | 2022-06-21 | 北京国双科技有限公司 | 一种用于预测查询资源占用量的特征确定方法及装置 |
CN112395311A (zh) * | 2019-08-13 | 2021-02-23 | 阿里巴巴集团控股有限公司 | 一种请求的处理时长的预测方法及装置 |
CN111127825A (zh) * | 2019-12-25 | 2020-05-08 | 深圳供电局有限公司 | 环境预测方法和装置、电子设备 |
CN113111058A (zh) * | 2020-01-10 | 2021-07-13 | 华为技术有限公司 | 一种数据库的处理方法和装置 |
WO2021139753A1 (zh) * | 2020-01-10 | 2021-07-15 | 华为技术有限公司 | 一种数据库的处理方法和装置 |
CN114218287A (zh) * | 2021-12-30 | 2022-03-22 | 北京诺司时空科技有限公司 | 一种面向时序数据库的查询时间预测方法 |
CN114218287B (zh) * | 2021-12-30 | 2022-11-04 | 北京诺司时空科技有限公司 | 一种面向时序数据库的查询时间预测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107491508B (zh) | 2020-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107491508A (zh) | 一种基于循环神经网络的数据库查询时间预测方法 | |
CN105468677A (zh) | 一种基于图结构的日志聚类方法 | |
CN109359172A (zh) | 一种基于图划分的实体对齐优化方法 | |
CN104537010A (zh) | 基于决策树的网构软件中的构件分类方法 | |
CN101894058B (zh) | 针对自动测试系统的测试覆盖性自动分析方法及其装置 | |
CN107918639A (zh) | 基于电力大数据主变高峰负荷预测方法及数据仓库系统 | |
CN103617329A (zh) | 一种基于人工神经网络和虚拟装配的装配时间评价方法 | |
CN110083125A (zh) | 一种基于深度学习的机床热误差建模方法 | |
CN104700190A (zh) | 一种用于项目与专业人员匹配的方法和装置 | |
CN105893669A (zh) | 一种基于数据挖掘的全局仿真性能预测方法 | |
CN109214407A (zh) | 事件检测模型、方法、装置、计算设备及存储介质 | |
CN109754122A (zh) | 一种基于随机森林特征提取的bp神经网络的数值预测方法 | |
CN104156635B (zh) | 基于公共子序列的基因芯片表达数据的opsm挖掘方法 | |
CN112749191A (zh) | 一种应用于数据库的智能代价估计方法、系统及电子设备 | |
CN105844398A (zh) | 一种基于plm数据库面向dpipp产品族的挖掘算法 | |
CN111814528B (zh) | 一种连通性分析的夜光影像城市等级分类方法 | |
CN110309907A (zh) | 一种基于去跟踪自编码器的动态缺失值填补方法 | |
CN113704565B (zh) | 基于全局区间误差的学习型时空索引方法、装置及介质 | |
CN114548494A (zh) | 一种可视化造价数据预测智能分析系统 | |
CN106485370A (zh) | 一种信息预测的方法和装置 | |
CN109086381A (zh) | 模糊概念格的一种更新生成方法 | |
CN110990907A (zh) | 基于特征-资源知识的船用柴油机关重件可制造性三级优化方法 | |
CN103793597B (zh) | 基于完备主干子系统的模型相似度度量方法 | |
CN116011564A (zh) | 一种面向电力设备的实体关系补全方法、系统及应用 | |
CN113835964B (zh) | 基于小样本学习的云数据中心服务器能耗预测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |