CN113360497A - 一种面向多负载的云数据库二级索引自动推荐方法和系统 - Google Patents
一种面向多负载的云数据库二级索引自动推荐方法和系统 Download PDFInfo
- Publication number
- CN113360497A CN113360497A CN202110579171.4A CN202110579171A CN113360497A CN 113360497 A CN113360497 A CN 113360497A CN 202110579171 A CN202110579171 A CN 202110579171A CN 113360497 A CN113360497 A CN 113360497A
- Authority
- CN
- China
- Prior art keywords
- query
- index
- layer
- neural network
- vector
- 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
Images
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
- G06F18/232—Non-hierarchical techniques
- G06F18/2321—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
- G06F18/23213—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions with fixed number of clusters, e.g. K-means clustering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种面向多负载的云数据库二级索引自动推荐方法,其包括:从数据库中的查询语句集合中随机选择多个查询语句组成查询语句样本集{q1,q2,...,qR},对样本集进行向量化处理,以得到查询语句向量组{x1,x2,...,xR},使用k‑means算法对向量组进行聚类分析,以得到k个2*N维向量作为k个查询模板、以及k个查询模板中每一个查询模板的权重,并用这k个查询模板表示整个查询语句集合的特征,将k个查询模板、以及每个查询模板的权重输入到预先训练好的多负载索引推荐模型中,以得到索引配置。本发明能够解决现有基于启发式的方法和机器学习的方法由于模型通用性差、只能为单一查询集合推荐索引配置,导致无法适用于云数据库业务场景的技术问题。
Description
技术领域
本发明属于数据库技术领域,更具体地,涉及一种面向多负载的云数据库二级索引自动推荐方法和系统。
背景技术
近年来,随着互联网技术的发展,各个领域的数据量高速增长,互联网行业进入大数据时代,许多企业的数据存储和计算能力无法匹配数据的增长速度,其自身不再建立数据库,而是购买云服务提供商售卖的云数据库服务作为替代。云数据库的用户缺乏为云数据库添加合理索引配置的意识和知识,无法加速查询,提高数据库性能,导致了严重的索引缺失问题。因此,需要引入索引推荐方法来解决上述问题。
现有的索引推荐方法主要是基于启发式的方法和机器学习的方法,但是这些方案都存在一些不可忽略的缺陷:第一、模型通用性差,只能为单一查询集合推荐索引配置,因此无法适用于云数据库业务场景;第二、模型的训练耗时长,且需要与数据库交互,因此无法适用于云数据库业务场景。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种面向多负载的云数据库二级索引自动推荐方法,其目的在于,解决现有基于启发式的方法和机器学习的方法由于模型通用性差、只能为单一查询集合推荐索引配置,导致无法适用于云数据库业务场景的技术问题,以及由于模型的训练耗时长,且需要与数据库交互,导致无法适用于云数据库业务场景的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种面向多负载的云数据库二级索引自动推荐方法,包括以下步骤:
(1)从数据库中的查询语句集合中随机选择多个查询语句组成查询语句样本集{q1,q2,…,qR},对样本集进行向量化处理,以得到查询语句向量组{x1,x2,…,xR},其中qi表示第i个查询语句,i∈[1,R],R表示样本集中的查询语句总数,xi表示qi向量化后的结果。
(2)使用k-means算法对步骤(1)得到的向量组进行聚类分析,以得到k个2*N维向量作为k个查询模板、以及k个查询模板中每一个查询模板的权重,并用这k个查询模板表示整个查询语句集合的特征;
(3)将步骤(2)中得到的k个查询模板、以及每个查询模板的权重输入到预先训练好的多负载索引推荐模型中,以得到索引配置。
优选地,步骤(1)中向量化处理的过程,是针对每一个查询语句qi而言,使用该查询语句的选择度、以及该查询语句是否包含属性来对该查询语句qi进行向量化,qi向量化后的结果xi是一个2*N维的向量,且有:
xi=(ai,1,…,ai,N,ci,1,…,ci,N)
其中N为样本集中所有查询语句包含的属性的个数,ai,j表示查询语句qi对应的查询条件中是否包含属性fj,如果包含则ai,j=1,,此时ci,j为查询语句qi在属性fj上的选择度,即查询条件中该属性fj可返回的结果数在数据库中所占的比例;如果不包含则ai,j=0,此时ci,j=1,j∈[1,N]。
优选地,多负载索引推荐模型包括第一全连接神经网络、第二全连接神经网络和第三全连接神经网络。
优选地,第三全连接神经网络是通过以下步骤训练得到的:
A1、使用Python产生多个随机的查询语句及其对应的索引,随机产生查询语句对应的查询条件中所包含的属性和属性的选择度,将产生的每个查询语句输入其对应索引的数据库中,以得到每个查询语句在其对应索引下的查询时间,对每个查询语句及其对应索引分别进行向量化处理,以得到两个向量,将这两个向量拼接成一个向量,该拼接后的向量作为该查询语句对应的样本的输入,查询时间作为该查询语句对应的样本的输出,所有查询语句对应的样本的输入和所有查询语句对应的样本的输出构成数据集,将数据集按照9:1的比例分为训练集和测试集;
A2、根据方差损失函数、并利用步骤A1得到的训练集对第三全连接神经网络进行迭代训练,直到其收敛为止,从而得到初步训练好的第三全连接神经网络;
A3、使用步骤A1得到的测试集对步骤A2初步训练好的第三全连接神经网络进行验证,以得到训练好的第三全连接神经网络;
优选地,第一全连接神经网络和第二全连接神经网络是通过以下步骤训练得到:
B1、使用Python中的Numpy库随机生成k个2*N维的向量作为查询模板,并随机为第m个查询模板分配权重wm,所有权重的和为1,其中m∈[1,k];
B2、将步骤B1得到的k个查询模板和每个查询模板的权重组合成特征信息W,将数据库的索引配置C和特征信息W转换为M*U*N+k+2*k*N维状态向量s,其中M表示数据库中能够添加的最大索引个数,U表示用户设定的复合索引的最大宽度。
B3、将步骤B2中得到的状态向量s输入第一全连接神经网络,以得到(2*N+1)维向量,生成0到1之间的随机数,并判断该随机数是否大于预设值ε(其初始值为0.3,每次迭代过程会乘以系数0.995),如果是则从(2*N+1)维向量中找到最大值,通过该最大值对应的操作a对数据库的索引配置C进行更新,以得到更新后的索引配置C′,此时状态向量s变成s′,然后进入步骤B4,否则随机选择一种操作a,并通过该操作a对数据库的索引配置C进行更新,以得到更新后的索引配置C′,此时状态向量s变成s′,然后进入步骤B4;
B4、将数据库的索引配置C和特征信息W一起、以及步骤B3更新后的索引配置C′和特征信息W一起分别输入训练好的第三全连接神经网络,以得到查询模板集合分别在索引配置C和C′下的执行时间T(C,W)和T(C′,W);
B5、根据步骤B4得到的执行时间T(C,W)和T(C′,W)计算执行时间的变化所带来的奖励,计算数据库中索引配置C和C′占用的存储空间的变化所带来的奖励,并将执行时间的变化所带来的奖励和存储空间的变化所带来的奖励进行加权和,以得到最终的奖励;
B6、将步骤B2中得到的状态向量s,步骤B3中执行的操作a和状态向量s′,步骤B5中得到的最终的奖励r、以及一个表示本轮训练是否到达终止状态的布尔变量done组成一个五元组<s,a,r,s′,done>存储在记忆池中;
B7、从步骤B6得到的记忆池中随机抽取多个五元组组成一个样本集,利用该样本集并使用损失函数L对第二全连接神经网络进行迭代训练,直到该第二全连接神经网络收敛为止,从而得到训练好的多负载索引推荐模型,其中第二全连接神经网络每迭代1000轮,就将该第二全连接神经网络的权重赋予第一全连接神经网络。
优选地,状态向量s为:
s=(sweight,sattr,sselectivity,sindex)
其中,sweight表示k个查询模板的权重所构成的权重向量,(sattr,sselectivity)表示k个查询模板的向量表示,sattr表示k个查询模板是否包含属性,sselectivity表示k个查询模板在属性上的选择度,sindex表示索引配置C的向量化结果。
针对索引配置的向量化过程而言,
sindex=(s1,…,sM)
其中si(i=1,…,M)为:
其中项的定义如下:
优选地,步骤B3中一共有三种类型的操作,如果最大值位于(2*N+1)维向量的前N维中,则对应于“添加一个新的索引的第一个属性”这个操作,如果位于中间的N维中,则对应于“为当前复合索引添加一个新的属性”这个操作,如果位于最后的1维,则对应于“不操作并跳转至结束状态”这个操作;
优选地,步骤B5中,执行时间的变化所带来的奖励等于:
rT(s,a,s′)=ln(T(Cs,W))-ln(T(Cs′,W))
其中Cs和Cs′分别表示状态向量s和状态向量s′下数据库中的索引配置。
存储空间的变化所带来的奖励等于:
其中A1和A2分别表示步骤B3中“添加一个新的索引的第一个属性”这个操作、以及“为当前复合索引添加一个新的属性”这个操作,CD1和CD2为经验参数,均为负实数,其表示索引配置占用的存储空间的变化会得到惩罚。
最终的奖励r定义为:
r=CT*rT(s,a,s′)+CD*rD(s,a,s′)
其中CT和CD均为经验参数。
损失函数L为:
L=E[(r+γmaxa′Q′(s′,a′)×(1-done)-Q(s,a))2]
其中Q为第一全连接神经网络,Q′为第二全连接神经网络,γ为衰减系数,0<γ<1。
优选地,第一全连接神经网络、第二全连接神经网络具有相同的网络结构,都是一个4层的Dueling DQN网络结构,其结构如下:
第一层是输入层,其输入为M×U×N+T+2×T×N维状态向量,该层使用(M×U×N+T+2×T×N)×512维的权重矩阵;
第二层为隐藏层,其输入为第一层输出的特征向量,输出为降维后的256维的特征向量,该层使用512×256维的权重矩阵;
第三层同样为隐藏层,输入为第二层输出的256维特征向量,包含两个输出,分别为一个一维向量和一个2×N+1维向量;
第四层为输出层,输入为第三层输出的特征向量,输出为2×N+1维向量。
第三全连接神经网络包括4层,其结构如下:
第一层是输入层,其输入为3×N维特征向量,该层使用(3×N)×64维的权重矩阵;
第二层为隐藏层,其输入为第一层输出的64维特征向量,输出为降维后的8维特征向量,该层使用64×8维的权重矩阵;
第三层同样为隐藏层,输入为第二层输出的8维特征向量,输出为1维特征向量,该层采用64×8维的权重矩阵;
第四层为输出层,输入为第三层输出的1维特征向量,输出同样为1维向量。
按照本发明的另一方面,提供了一种面向多查询模板集合的云数据库二级索引自动推荐系统,包括:
第一模块,用于从数据库中的查询语句集合中随机选择多个查询语句组成查询语句样本集{q1,q2,…,qR},对样本集进行向量化处理,以得到查询语句向量组{x1,x2,…,xR},其中qi表示第i个查询语句,i∈[1,R],R表示样本集中的查询语句总数,xi表示qi向量化后的结果。
第二模块,用于使用k-means算法对第一模块得到的向量组进行聚类分析,以得到k个2*N维向量作为k个查询模板、以及k个查询模板中每一个查询模板的权重,并用这k个查询模板表示整个查询语句集合的特征;
第三模块,用于将第二模块中得到的k个查询模板、以及每个查询模板的权重输入到预先训练好的多负载索引推荐模型中,以得到索引配置。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)由于本发明采用了步骤B1和步骤B2,其将查询集合的权重和选择度特征进行向量化,反映了不同查询集合在执行时间方面的差异性,使用多种不同的查询集合进行训练,最终得到的索引推荐模型可以为不同的查询集合推荐索引配置,因此能够解决现有基于启发式的方法和机器学习的方法由于模型通用性差、只能为单一查询集合推荐索引配置,导致无法适用于云数据库业务场景的技术问题;
(2)由于本发明采用了步骤A1到步骤A3,其训练得到第三全连接神经网络,用于预测查询语句的执行时间,代替了传统方法中在数据库中执行查询语句得到查询时间的步骤,减少了索引推荐模型的训练时间,且不需要与数据库进行交互,因此能够解决现有基于启发式的方法和机器学习的方法由于模型的训练耗时长,且需要与数据库交互,导致无法适用于云数据库业务场景的技术问题。
(3)由于本发明采用了步骤(1)到步骤(3),其将包含大量查询的查询集合使用k-means聚类算法进行聚类,得到k个查询模板,然后使用预先训练好的多负载索引推荐模型为其推荐索引配置,因此能够为包含大量查询的查询集合推荐索引配置,相较于现有基于启发式的方法和机器学习的方法只能为包含少量查询的查询集合推荐索引配置的情况,更符合云数据库的业务需求;
(4)由于本发明采用了步骤B3到步骤B7,其能够推荐复合索引,奖励能够约束数据库的索引配置的存储空间,因此能够推荐使查询集合运行时间短、数据库的索引配置存储空间小的索引配置。
附图说明
图1是本发明面向多负载的云数据库二级索引自动推荐方法的整体框架示意图;
图2是本发明方法在TPC-H数据集和云数据库上的索引推荐效果;
图3是本发明基于强化学习的云数据库二级索引自动推荐方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明是基于强化学习和深度神经网络的基础上实现的,通过对强化学习框架中的六要素针对索引推荐问题进行合理的设计,通过在状态中添加查询模板集合的特征,利用聚类分析提取出能代表不同查询语句集合的查询模板作为模型的输入,同时利用查询时间预测代替实际的数据库执行,加快了模型的训练速度,使用DQN网络学习推荐针对不同查询模板集合的高效索引配置,提升了云数据库的查询性能。
如图1和图3所示,本发明提供了一种面向多负载的云数据库二级索引自动推荐方法。包括以下步骤:
(1)从数据库中的查询语句集合中随机选择多个查询语句组成查询语句样本集{q1,q2,…,qR},对样本集进行向量化处理,以得到查询语句向量组{x1,x2,…,xR},其中qi表示第i个查询语句,i∈[1,R],R表示样本集中的查询语句总数,xi表示qi向量化后的结果;
具体而言,本步骤中向量化处理的过程,是针对每一个查询语句qi而言,使用该查询语句的选择度、以及该查询语句是否包含属性来对该查询语句qi进行向量化,qi向量化后的结果xi是一个2*N维的向量,且有:
xi=(ai,1,…,ai,N,ci,1,…,ci,N)
其中N为样本集中所有查询语句包含的属性的个数,ai,j表示查询语句qi对应的查询条件中是否包含属性fj,如果包含则ai,j=1,,此时ci,j为查询语句qi在属性fj上的选择度,即查询条件中该属性fj可返回的结果数在数据库中所占的比例;如果不包含则ai,j=0,此时ci,j=1,j∈[1,N]。
(2)使用k-means算法对步骤(1)得到的向量组进行聚类分析,以得到k个2*N维向量作为k个查询模板、以及k个查询模板中每一个查询模板的权重,并用这k个查询模板表示整个查询语句集合的特征;
具体而言,聚类分析所得到的k个类,每个类的几何中心是作为查询模板,每个类中包含的向量个数与向量组中向量的总数之间的比值作为该查询模板的权重。
(3)将步骤(2)中得到的k个查询模板、以及每个查询模板的权重输入到预先训练好的多负载索引推荐模型中,以得到索引配置;
本发明的多负载索引推荐模型包括第一全连接神经网络、第二全连接神经网络和第三全连接神经网络。
具体而言,第三全连接神经网络是通过以下步骤训练得到的:
A1、使用Python产生多个随机的查询语句及其对应的索引,随机产生查询语句对应的查询条件中所包含的属性和属性的选择度,将产生的每个查询语句输入其对应索引的数据库中,以得到每个查询语句在其对应索引下的查询时间,对每个查询语句及其对应索引分别进行向量化处理,以得到两个向量,将这两个向量拼接成一个向量,该拼接后的向量作为该查询语句对应的样本的输入,查询时间作为该查询语句对应的样本的输出,所有查询语句对应的样本的输入和所有查询语句对应的样本的输出构成数据集,将数据集按照9:1的比例分为训练集和测试集;
具体而言,对查询语句进行向量化的过程与上述步骤(1)完全相同,在此不再赘述。
A2、根据方差损失函数、并利用步骤A1得到的训练集对第三全连接神经网络进行迭代训练,直到其收敛为止,从而得到初步训练好的第三全连接神经网络;
A3、使用步骤A1得到的测试集对步骤A2初步训练好的第三全连接神经网络进行验证,以得到训练好的第三全连接神经网络。
本发明的第一全连接神经网络和第二全连接神经网络是通过以下步骤训练得到:
B1、使用Python中的Numpy库随机生成k个2*N维的向量作为查询模板,并随机为第m个查询模板分配权重wm,所有权重的和为1,其中m∈[1,k];
B2、将步骤B1得到的k个查询模板和每个查询模板的权重组合成特征信息W,将数据库的索引配置C和特征信息W转换为M*U*N+k+2*k*N维状态向量,其中M表示数据库中能够添加的最大索引个数,U表示用户设定的复合索引(即数据库中包含多个属性的索引)的最大宽度。
具体而言,状态向量s为:
s=(sweight,sattr,sselectivity,sindex)
其中,sweight表示k个查询模板的权重所构成的权重向量,(sattr,sselectivity)表示k个查询模板的向量表示,sattr表示k个查询模板是否包含属性,sselectivity表示k个查询模板在属性上的选择度,sidex表示索引配置C的向量化结果。
针对索引配置的向量化过程而言,
sindex=(s1,…,sM)
其中si(i=1,…,M)的定义为:
其中的项的定义如下:
故状态sindex是M*U*N的向量,表示了M个复合索引各自的属性构成信息。
例如,对于属性集{english,math,chinese},M=3,U=2,如果当前的索引配置中包括复合索引{english,math}和单列索引{chinese},则状态为:
其中x1,1,1表明第一个复合索引的第一个属性为属性集中的f1(即english)。
B3、将步骤B2中得到的状态向量s输入第一全连接神经网络,以得到(2*N+1)维向量,生成0到1之间的随机数,并判断该随机数是否大于预设值ε(其初始值为0.3,每次迭代过程会乘以系数0.995),如果是则从(2*N+1)维向量中找到最大值,通过该最大值对应的操作a对数据库的索引配置C进行更新,以得到更新后的索引配置C′,此时状态向量s变成s′,然后进入步骤B4,否则随机选择一种操作a,并通过该操作a对数据库的索引配置C进行更新,以得到更新后的索引配置C′,此时状态向量s变成s′,然后进入步骤B4;
具体而言,一共有三种类型的操作,如果最大值位于(2*N+1)维向量的前N维中,则对应于“添加一个新的索引的第一个属性”这个操作,如果位于中间的N维中,则对应于“为当前复合索引添加一个新的属性”这个操作,如果位于最后的1维,则对应于“不操作并跳转至结束状态”这个操作。
B4、将数据库的索引配置C和特征信息W一起、以及步骤B3更新后的索引配置C′和特征信息W一起分别输入训练好的第三全连接神经网络,以得到查询模板集合分别在索引配置C和C′下的执行时间T(C,W)和T(C′,W);
B5、根据步骤B4得到的执行时间T(C,W)和T(C′,W)计算执行时间的变化所带来的奖励,计算数据库中索引配置C和C′占用的存储空间的变化所带来的奖励,并将执行时间的变化所带来的奖励和存储空间的变化所带来的奖励进行加权和,以得到最终的奖励;
具体而言,执行时间的变化所带来的奖励等于:
rT(s,a,s′)=ln(T(Cs,W))-ln(T(Cs′,W))
其中Cs和Cs′分别表示状态向量s和状态向量s′下数据库中的索引配置。
然后,存储空间的变化所带来的奖励等于:
其中A1和A2分别表示步骤B3中“添加一个新的索引的第一个属性”这个操作、以及“为当前复合索引添加一个新的属性”这个操作,CD1和CD2为经验参数,均为负实数,其表示索引配置占用的存储空间的变化会得到惩罚。
本步骤中最终的奖励r定义为:
r=CT*rT(s,a,s′)+CD*rD(s,a,s′)
其中CT和CS均为经验参数。
B6、将步骤B2中得到的状态向量s,步骤B3中执行的操作a和状态向量s′,步骤B5中得到的最终的奖励r、以及一个表示本轮训练是否到达终止状态的布尔变量done组成一个五元组<s,a,r,s′,done>存储在记忆池(其初始状态为空)中;
B7、从步骤B6得到的记忆池中随机抽取多个(其数量可以为任意,优选为16个)五元组组成一个样本集(batch),利用该样本集并使用损失函数L对第二全连接神经网络进行迭代训练,直到该第二全连接神经网络收敛为止,从而得到训练好的多负载索引推荐模型,其中第二全连接神经网络每迭代1000轮,就将该第二全连接神经网络的权重赋予第一全连接神经网络。
具体而言,损失函数L为:
L=E[(r+γmaxa′Q′(s′,a′)×(1-done)-Q(s,a))2]
其中Q为第一全连接神经网络,Q′为第二全连接神经网络,γ为衰减系数,0<γ<1,表明模型是否看重长期利益,模型越重视当前的利益(即当前采取的操作取得的奖励值),则γ越小,模型越重视长远的利益(即未来的一系列操作累计的奖励值),则γ越大。
第一全连接神经网络、第二全连接神经网络具有相同的网络结构,都是一个4层的Dueling DQN网络结构,第一层是输入层,其输入为M×U×N+T+2×T×N维状态向量,该层使用(M×U×N+T+2×T×N)×512维的权重矩阵;第二层为隐藏层,其输入为第一层输出的特征向量,输出为降维后的256维的特征向量,该层使用512×256维的权重矩阵;第三层同样为隐藏层,输入为第二层输出的256维特征向量,包含两个输出,分别为一个一维向量和一个2×N+1维向量;第四层为输出层,输入为第三层输出的特征向量,输出为2×N+1维向量。
第三全连接神经网络包括4层,其结构如下:第一层是输入层,其输入为3×N维特征向量,该层使用(3×N)×64维的权重矩阵;第二层为隐藏层,其输入为第一层输出的64维特征向量,输出为降维后的8维特征向量,该层使用64×8维的权重矩阵;第三层同样为隐藏层,输入为第二层输出的8维特征向量,输出为1维特征向量,该层采用64×8维的权重矩阵;第四层为输出层,输入为第三层输出的1维特征向量,输出同样为1维向量。
实验结果
本发明实验环境:CPU为8枚Intel(R)Xeon(R)Platinum 8255C CPU@2.50GHz,内存为16GB DDR4,硬盘容量为500G,在CentOS Linux release7.9操作系统下,数据库为MongoDB(v4.0.20),采用Python和机器学习库keras编程实现本文算法。
为了说明多负载模型可以为实际查询模板集合推荐优秀的索引配置,实验共采用了三组数据集,如表1所示,在本实验中使用离线训练模块训练的索引推荐模型为四组查询模板集合(W1,W2,W3,W4)推荐索引配置,其中查询模板集合W1和W2来自于TPC-H数据集,而负载W3和W4来自于云数据库中实际的查询模板集合。与文献“The Case for AutomaticDatabase Administration using Deep Reinforcement Learning(arXiv2018)”提出的一种单列索引推荐方法的索引配置的性能进行了对比,图2给出了在可添加的最大索引数量为2、每个索引包含的最大属性数为3情况下的对比结果。由图2可知,相比于无索引的情况,本发明的多负载模型在不同查询模板集合下都能推荐性能优秀的索引配置,进一步观测到,在同等条件下,使用本发明推荐的索引配置使得查询模板集合的执行时间相较于文献方法的单列索引推荐方法降低了17.%~67.43%。
表1
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种面向多负载的云数据库二级索引自动推荐方法,其特征在于,包括以下步骤:
(1)从数据库中的查询语句集合中随机选择多个查询语句组成查询语句样本集{q1,q2,...,qR},对样本集进行向量化处理,以得到查询语句向量组{x1,x2,...,xR},其中qi表示第i个查询语句,i∈[1,R],R表示样本集中的查询语句总数,xi表示qi向量化后的结果。
(2)使用k-means算法对步骤(1)得到的向量组进行聚类分析,以得到k个2*N维向量作为k个查询模板、以及k个查询模板中每一个查询模板的权重,并用这k个查询模板表示整个查询语句集合的特征;
(3)将步骤(2)中得到的k个查询模板、以及每个查询模板的权重输入到预先训练好的多负载索引推荐模型中,以得到索引配置。
2.根据权利要求1所述的面向多负载的云数据库二级索引自动推荐方法。其特征在于,
步骤(1)中向量化处理的过程,是针对每一个查询语句qi而言,使用该查询语句的选择度、以及该查询语句是否包含属性来对该查询语句qi进行向量化,qi向量化后的结果xi是一个2*N维的向量,且有:
xi=(ai,1,...,ai,N,ci,1,...,ci,N)
其中N为样本集中所有查询语句包含的属性的个数,ai,j表示查询语句qi对应的查询条件中是否包含属性fj,如果包含则ai,j=1,此时ci,j为查询语句qi在属性fj上的选择度,即查询条件中该属性fj可返回的结果数在数据库中所占的比例;如果不包含则ai,j=0,此时ci,j=1,j∈[1,N]。
3.根据权利要求1或2所述的面向多负载的云数据库二级索引自动推荐方法。其特征在于,多负载索引推荐模型包括第一全连接神经网络、第二全连接神经网络和第三全连接神经网络。
4.根据权利要求1至3任意一项所述的面向多负载的云数据库二级索引自动推荐方法,其特征在于,第三全连接神经网络是通过以下步骤训练得到的:
A1、使用Python产生多个随机的查询语句及其对应的索引,随机产生查询语句对应的查询条件中所包含的属性和属性的选择度,将产生的每个查询语句输入其对应索引的数据库中,以得到每个查询语句在其对应索引下的查询时间,对每个查询语句及其对应索引分别进行向量化处理,以得到两个向量,将这两个向量拼接成一个向量,该拼接后的向量作为该查询语句对应的样本的输入,查询时间作为该查询语句对应的样本的输出,所有查询语句对应的样本的输入和所有查询语句对应的样本的输出构成数据集,将数据集按照9∶1的比例分为训练集和测试集;
A2、根据方差损失函数、并利用步骤A1得到的训练集对第三全连接神经网络进行迭代训练,直到其收敛为止,从而得到初步训练好的第三全连接神经网络;
A3、使用步骤A1得到的测试集对步骤A2初步训练好的第三全连接神经网络进行验证,以得到训练好的第三全连接神经网络。
5.根据权利要求1所述的面向多负载的云数据库二级索引自动推荐方法,其特征在于,第一全连接神经网络和第二全连接神经网络是通过以下步骤训练得到:
B1、使用Python中的Numpy库随机生成k个2*N维的向量作为查询模板,并随机为第m个查询模板分配权重wm,所有权重的和为1,其中m∈[1,k];
B2、将步骤B1得到的k个查询模板和每个查询模板的权重组合成特征信息W,将数据库的索引配置C和特征信息W转换为M*U*N+k+2*k*N维状态向量s,其中M表示数据库中能够添加的最大索引个数,U表示用户设定的复合索引的最大宽度。
B3、将步骤B2中得到的状态向量s输入第一全连接神经网络,以得到(2*N+1)维向量,生成0到1之间的随机数,并判断该随机数是否大于预设值ε(其初始值为0.3,每次迭代过程会乘以系数0.995),如果是则从(2*N+1)维向量中找到最大值,通过该最大值对应的操作a对数据库的索引配置C进行更新,以得到更新后的索引配置C′,此时状态向量s变成s′,然后进入步骤B4,否则随机选择一种操作a,并通过该操作a对数据库的索引配置C进行更新,以得到更新后的索引配置C′,此时状态向量s变成s′,然后进入步骤B4;
B4、将数据库的索引配置C和特征信息W一起、以及步骤B3更新后的索引配置C′和特征信息W一起分别输入训练好的第三全连接神经网络,以得到查询模板集合分别在索引配置C和C′下的执行时间T(C,W)和T(C′,W);
B5、根据步骤B4得到的执行时间T(C,W)和T(C′,W)计算执行时间的变化所带来的奖励,计算数据库中索引配置C和C′占用的存储空间的变化所带来的奖励,并将执行时间的变化所带来的奖励和存储空间的变化所带来的奖励进行加权和,以得到最终的奖励;
B6、将步骤B2中得到的状态向量s,步骤B3中执行的操作a和状态向量s′,步骤B5中得到的最终的奖励r、以及一个表示本轮训练是否到达终止状态的布尔变量done组成一个五元组<s,a,r,s′,done>存储在记忆池中;
B7、从步骤B6得到的记忆池中随机抽取多个五元组组成一个样本集,利用该样本集并使用损失函数L对第二全连接神经网络进行迭代训练,直到该第二全连接神经网络收敛为止,从而得到训练好的多负载索引推荐模型,其中第二全连接神经网络每迭代1000轮,就将该第二全连接神经网络的权重赋予第一全连接神经网络。
7.根据权利要求5所述的面向多负载的云数据库二级索引自动推荐方法,其特征在于,步骤B3中一共有三种类型的操作,如果最大值位于(2*N+1)维向量的前N维中,则对应于“添加一个新的索引的第一个属性”这个操作,如果位于中间的N维中,则对应于“为当前复合索引添加一个新的属性”这个操作,如果位于最后的1维,则对应于“不操作并跳转至结束状态”这个操作。
8.根据权利要求5所述的面向多负载的云数据库二级索引自动推荐方法,其特征在于,
步骤B5中,执行时间的变化所带来的奖励等于:
rT(s,a,s′)=ln(T(Cs,W))-ln(T(Cs′,W))
其中Cs和Cs′分别表示状态向量s和状态向量s′下数据库中的索引配置。
存储空间的变化所带来的奖励等于:
其中A1和A2分别表示步骤B3中“添加一个新的索引的第一个属性”这个操作、以及“为当前复合索引添加一个新的属性”这个操作,CD1和CD2为经验参数,均为负实数,其表示索引配置占用的存储空间的变化会得到惩罚。
最终的奖励r定义为:
r=CT*rT(s,a,s′)+CD*rD(s,a,s′)
其中CT和CD均为经验参数。
损失函数L为:
L=E[(r+γmaxa′Q′(s′,a′)×(1-done)-Q(s,a))2]
其中Q为第一全连接神经网络,Q′为第二全连接神经网络,γ为衰减系数,0<γ<1。
9.根据权利要求5所述的面向多负载的云数据库二级索引自动推荐方法,其特征在于,
第一全连接神经网络、第二全连接神经网络具有相同的网络结构,都是一个4层的Dueling DQN网络结构,其结构如下:
第一层是输入层,其输入为M×U×N+T+2×T×N维状态向量,该层使用(M×U×N+T+2×T×N)×512维的权重矩阵;
第二层为隐藏层,其输入为第一层输出的特征向量,输出为降维后的256维的特征向量,该层使用512×256维的权重矩阵;
第三层同样为隐藏层,输入为第二层输出的256维特征向量,包含两个输出,分别为一个一维向量和一个2×N+1维向量;
第四层为输出层,输入为第三层输出的特征向量,输出为2×N+1维向量。
第三全连接神经网络包括4层,其结构如下:
第一层是输入层,其输入为3×N维特征向量,该层使用(3×N)×64维的权重矩阵;
第二层为隐藏层,其输入为第一层输出的64维特征向量,输出为降维后的8维特征向量,该层使用64×8维的权重矩阵;
第三层同样为隐藏层,输入为第二层输出的8维特征向量,输出为1维特征向量,该层采用64×8维的权重矩阵;
第四层为输出层,输入为第三层输出的1维特征向量,输出同样为1维向量。
10.一种面向多查询模板集合的云数据库二级索引自动推荐系统,其特征在于,包括:
第一模块,用于从数据库中的查询语句集合中随机选择多个查询语句组成查询语句样本集{q1,q2,...,qR},对样本集进行向量化处理,以得到查询语句向量组{x1,x2,...,xR},其中qi表示第i个查询语句,i∈[1,R],R表示样本集中的查询语句总数,xi表示qi向量化后的结果。
第二模块,用于使用k-means算法对第一模块得到的向量组进行聚类分析,以得到k个2*N维向量作为k个查询模板、以及k个查询模板中每一个查询模板的权重,并用这k个查询模板表示整个查询语句集合的特征;
第三模块,用于将第二模块中得到的k个查询模板、以及每个查询模板的权重输入到预先训练好的多负载索引推荐模型中,以得到索引配置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110579171.4A CN113360497B (zh) | 2021-05-26 | 2021-05-26 | 一种面向多负载的云数据库二级索引自动推荐方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110579171.4A CN113360497B (zh) | 2021-05-26 | 2021-05-26 | 一种面向多负载的云数据库二级索引自动推荐方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113360497A true CN113360497A (zh) | 2021-09-07 |
CN113360497B CN113360497B (zh) | 2022-04-05 |
Family
ID=77527715
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110579171.4A Active CN113360497B (zh) | 2021-05-26 | 2021-05-26 | 一种面向多负载的云数据库二级索引自动推荐方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113360497B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114064689A (zh) * | 2021-11-11 | 2022-02-18 | 华中科技大学 | 基于慢查询日志的云数据库二级索引自动推荐方法和系统 |
CN114328669A (zh) * | 2021-12-30 | 2022-04-12 | 北京诺司时空科技有限公司 | 基于深度学习的自动化时序数据库索引推荐方法、存储介质及设备 |
CN115017130A (zh) * | 2022-01-19 | 2022-09-06 | 昆明理工大学 | 基于深度强化学习的多属性索引选择 |
CN114064689B (zh) * | 2021-11-11 | 2024-07-12 | 华中科技大学 | 基于慢查询日志的云数据库二级索引自动推荐方法和系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106557563A (zh) * | 2016-11-15 | 2017-04-05 | 北京百度网讯科技有限公司 | 基于人工智能的查询语句推荐方法及装置 |
US20180268035A1 (en) * | 2015-01-12 | 2018-09-20 | Siemens Technology And Services Pvt. Ltd. | A query processing engine recommendation method and system |
CN111274359A (zh) * | 2020-01-20 | 2020-06-12 | 福州大学 | 基于改进vhred与强化学习的查询推荐方法及系统 |
CN111611274A (zh) * | 2020-05-28 | 2020-09-01 | 华中科技大学 | 一种数据库查询优化方法和系统 |
CN111832289A (zh) * | 2020-07-13 | 2020-10-27 | 重庆大学 | 一种基于聚类和高斯lda的服务发现方法 |
CN112347100A (zh) * | 2020-10-27 | 2021-02-09 | 杭州安恒信息技术股份有限公司 | 数据库索引优化方法、装置、计算机设备和存储介质 |
-
2021
- 2021-05-26 CN CN202110579171.4A patent/CN113360497B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180268035A1 (en) * | 2015-01-12 | 2018-09-20 | Siemens Technology And Services Pvt. Ltd. | A query processing engine recommendation method and system |
CN106557563A (zh) * | 2016-11-15 | 2017-04-05 | 北京百度网讯科技有限公司 | 基于人工智能的查询语句推荐方法及装置 |
CN111274359A (zh) * | 2020-01-20 | 2020-06-12 | 福州大学 | 基于改进vhred与强化学习的查询推荐方法及系统 |
CN111611274A (zh) * | 2020-05-28 | 2020-09-01 | 华中科技大学 | 一种数据库查询优化方法和系统 |
CN111832289A (zh) * | 2020-07-13 | 2020-10-27 | 重庆大学 | 一种基于聚类和高斯lda的服务发现方法 |
CN112347100A (zh) * | 2020-10-27 | 2021-02-09 | 杭州安恒信息技术股份有限公司 | 数据库索引优化方法、装置、计算机设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
王飞等: "基于本体语义的西藏相关知识查询系统设计研究", 《山西大学学报(自然科学版)》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114064689A (zh) * | 2021-11-11 | 2022-02-18 | 华中科技大学 | 基于慢查询日志的云数据库二级索引自动推荐方法和系统 |
CN114064689B (zh) * | 2021-11-11 | 2024-07-12 | 华中科技大学 | 基于慢查询日志的云数据库二级索引自动推荐方法和系统 |
CN114328669A (zh) * | 2021-12-30 | 2022-04-12 | 北京诺司时空科技有限公司 | 基于深度学习的自动化时序数据库索引推荐方法、存储介质及设备 |
CN114328669B (zh) * | 2021-12-30 | 2023-05-16 | 北京诺司时空科技有限公司 | 基于深度学习的自动化时序数据库索引推荐方法及设备 |
CN115017130A (zh) * | 2022-01-19 | 2022-09-06 | 昆明理工大学 | 基于深度强化学习的多属性索引选择 |
Also Published As
Publication number | Publication date |
---|---|
CN113360497B (zh) | 2022-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kumar et al. | Ensemble learning for AI developers | |
CN113360497B (zh) | 一种面向多负载的云数据库二级索引自动推荐方法和系统 | |
CN111401928B (zh) | 基于图数据确定文本的语义相似度的方法及装置 | |
US11915129B2 (en) | Method and system for table retrieval using multimodal deep co-learning with helper query-dependent and query-independent relevance labels | |
CN116134432A (zh) | 用于提供对查询的答案的系统和方法 | |
CN114329029B (zh) | 对象检索方法、装置、设备及计算机存储介质 | |
US11797281B2 (en) | Multi-language source code search engine | |
CN113821527A (zh) | 哈希码的生成方法、装置、计算机设备及存储介质 | |
CN117236410A (zh) | 一种可信的电子文件大语言模型训练、推理方法和装置 | |
Shan et al. | Recurrent binary embedding for gpu-enabled exhaustive retrieval from billion-scale semantic vectors | |
Zeng et al. | Semantic service clustering with lightweight bert-based service embedding using invocation sequences | |
CN114490926A (zh) | 一种相似问题的确定方法、装置、存储介质及终端 | |
Malhotra et al. | Bidirectional transfer learning model for sentiment analysis of natural language | |
Park et al. | Automatic extraction of user’s search intention from web search logs | |
Ávila et al. | A gene expression programming algorithm for multi-label classification | |
Viegas et al. | Parallel lazy semi-naive bayes strategies for effective and efficient document classification | |
Zhang et al. | Meta-complementing the semantics of short texts in neural topic models | |
Piza-Davila et al. | A parallel hill-climbing algorithm to generate a subset of irreducible testors | |
Muja | Scalable nearest neighbour methods for high dimensional data | |
CN115129863A (zh) | 意图识别方法、装置、设备、存储介质和计算机程序产品 | |
Yu et al. | Fast Text Classification by Leveraging Class Feature Words | |
Cui et al. | A new Chinese text clustering algorithm based on WRD and improved K-means | |
Weston et al. | Affinity weighted embedding | |
Yang et al. | Supervised fine tuning for word embedding with integrated knowledge | |
Thonglek et al. | Automated quantization and retraining for neural network models without labeled data |
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 |