CN114064689A - 基于慢查询日志的云数据库二级索引自动推荐方法和系统 - Google Patents
基于慢查询日志的云数据库二级索引自动推荐方法和系统 Download PDFInfo
- Publication number
- CN114064689A CN114064689A CN202111330011.2A CN202111330011A CN114064689A CN 114064689 A CN114064689 A CN 114064689A CN 202111330011 A CN202111330011 A CN 202111330011A CN 114064689 A CN114064689 A CN 114064689A
- Authority
- CN
- China
- Prior art keywords
- query
- vector
- cluster
- clusters
- database
- 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.)
- Pending
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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- 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/25—Integrating or interfacing systems involving database management systems
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/2323—Non-hierarchical techniques based on graph theory, e.g. minimum spanning trees [MST] or graph cuts
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- Discrete Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于慢查询日志的云数据库二级索引推荐方法,包括:从数据库中的慢查询日志中查询工作负载集,利用正则表达式匹配该查询工作负载集中每个查询语句中的多个常量,将匹配到的每个常量替换为占位符,将替换操作后得到的所有查询语句中重复的查询语句删除,从而得到n个查询模板组成的查询模板集合,对该查询模板集合进行向量化处理,以得到查询模板集合对应的向量组,使用查询模板集合对应的向量组构建K维树,利用构建的K维树对向量组进行聚类,对得到的p个聚类中的向量对应的查询模板中的字段以及谓词信息进行解析,以得到查询工作负载对应的索引配置。本发明能够有效解决现有基于启发式方法无法适用于云数据库业务场景的问题。
Description
技术领域
本发明属于数据库技术领域,更具体的,涉及一种基于慢查询日志的云数据库二级索引推荐方法和系统。
背景技术
近年来,随着互联网技术的高速发展,数据量呈现爆发式增长,大数据库时代来临。许多企业的数据存储和计算能力无法匹配数据的增长速度,其自身不再建立数据库,而是购买云服务提供商售卖的云数据库服务作为替代。云数据库的用户缺乏为云数据库添加合理索引配置的意识和知识,无法加速查询,提高数据库性能,导致了严重的索引缺失问题。因此,需要引入索引推荐方法来解决上述问题。
现有的索引推荐方法主要是基于启发式的方法和机器学习的方法,其中基于启发式的方法是对索引空间进行贪心搜索,在与数据库交互的情况下不断调整索引配置以最小化工作负载的执行时间;基于机器学习的方法主要采用了深度强化学习(DRL)方法,使用DQN对工作负载进行索引推荐的训练。
然而,上述两种索引推荐方法都存在一些不可忽略的缺陷:第一,机器学习方法模型通用性差,只能为单一查询集合推荐索引配置,因此无法适用于云数据库含有大量工作负载的业务场景;第二,启发式方法在推荐过程中需要与数据库交互,只适合少量工作负载的业务场景;第三,机器学习模型的训练耗时间长,且需要与数据库交互,因此同样无法适用于云数据库业务场景;第四,机器学习方法的模型输入特征计算时间长,在云数据库业务场景下难以获取。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于慢查询日志的云数据库二级索引推荐方法和系统,其目的在于,解决现有机器学习方法由于模型通用性差,只能为单一查询集合推荐索引配置,导致无法适用于云数据库含有大量工作负载的业务场景的技术问题,以及由于训练耗时间长,且需要与数据库交互,导致同样无法适用于云数据库业务场景的技术问题,以及由于模型输入特征计算时间长,导致在云数据库业务场景下难以获取的技术问题,以及现有启发式方法由于在推荐过程中需要与数据库交互,导致只适合少量工作负载的业务场景的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种基于慢查询日志的云数据库二级索引推荐方法,包括以下步骤:
(1)从数据库中的慢查询日志中获取过去一段时间内的查询语句以及该查询语句到达数据库的时间所组成的查询工作负载集{Q1,Q2,…,QR},利用正则表达式匹配该查询工作负载集中每个查询语句中的多个常量,将匹配到的每个常量替换为占位符,将替换操作后得到的所有查询语句中重复的查询语句删除,从而得到n个查询模板组成的查询模板集合{T1,T2,…,Tn},对该查询模板集合进行向量化处理,以得到查询模板集合对应的向量组{x1,x2,…,xn},其中Qi表示第i个查询语句及其到达数据库的时间,且有i∈[1,R],R表示查询工作负载集中的元素总数,xj表示第j个查询模板向量化后的结果,且有j∈[1,n]。
(2)使用步骤(1)得到的查询模板集合对应的向量组构建K维树,利用构建的K维树,并根据改进后的具有噪声的基于密度的聚类方法对向量组进行聚类,以得到p个聚类,其中p的取值范围是3到5之间;
(3)对步骤(2)中得到的p个聚类中的向量对应的查询模板中的字段以及谓词信息进行解析,以得到查询工作负载集对应的索引配置。
优选地,步骤(1)中向量化处理的过程,是针对每一个查询模板Tj而言,根据其对应的多个查询语句所对应的到达数据库的时间{t1,t2,…,tm},其中m表示查询模板Tj对应的查询语句的个数,以分钟为间隔,并根据该查询模板每分钟在数据库中出现的次数来对查询模板进行向量化,以得到查询模板Tj向量化后的结果xj,其是一个1440*7维的向量,且有:
xj=(cj,1,…,cj,N,cj,N+1,…,cj,10080)
其中cj,k表示步骤(1)的日志获取过程开始后的第k分钟里查询模板Tj在数据库中出现的次数,且有k∈[1,1440*7]。
优选地,步骤(2)具体包括以下子步骤:
(2-1)使用步骤(1)得到的查询模板集合对应的向量组构建K维树。
(2-2)将向量组中的第一个向量设置为当前聚类中心;
(2-3)对于向量组中的每一个向量而言,计算其与当前聚类中心之间的余弦相似度是否大于等于阈值ρ(其取值范围是0.6到1,优选为0.8),如果是则将该向量归入当前聚类,否则为该向量创建一个新的聚类;
(2-4)计算每一个聚类的聚类中心,并使用每一聚类的聚类中心以及向量组中的所有向量构建K维树(该过程与步骤(2-1)中完全相同)。
具体而言,如果某个聚类中已经有大于一个向量,则该聚类的聚类中心是该聚类中包含的所有向量的算术平均值,如果某个聚类中只有一个向量,则该向量就是该聚类的聚类中心。
(2-5)设置标志位w=0;
(2-6)针对第一个聚类而言,计算该聚类中的第一个向量与该聚类的聚类中心之间的余弦相似度,如果余弦相似度小于等于ρ,则将该向量从其所属聚类中移除,将标志位w设置为1,并根据步骤(2-4)构建的K维树查找距离该向量最近的聚类中心,并将该向量移到该聚类中心所在聚类中,针对该聚类中的剩余所有向量,重复执行上述过程,直到该聚类中的所有向量都被处理完毕为止;
(2-7)针对剩余所有聚类,重复上述步骤(2-6),直到所有聚类都处理完毕为止,并判断w是否等于1,如果是则返回步骤(2-4),否则进入步骤(2-8);
(2-8)针对得到的所有聚类的两两组合而言,计算第一个两两组合中两个聚类的聚类中心之间的余弦相似度,并判断该余弦相似度是否大于ρ,如果是则合并这两个聚类,否则针对剩余的两两组合,重复本步骤,直到所有两两组合都计算完毕为止,从而得到更新后的多个聚类;
(2-9)根据步骤(2-8)中更新后的多个聚类中包含的向量个数,选取向量个数排名前p的聚类构成最终的p个聚类。
优选地,步骤(2-1)中构建K维树的过程包括以下子步骤:
(2-1-1)建立K维树的根节点,并设置树的根节点的编号i=1,节点数j=1;
(2-1-2)判断i是否小于向量组中向量的总数n,如果是则转入步骤(2-1-3),否则转入(2-1-5);
(2-1-3)判断j是否小于等于n,如果是则转入步骤(2-1-4),否则说明K维树构造完成,过程结束;
(2-1-4)构建编号为i的节点的左子树的根节点,设置j=j+1,并将左子树的根节点的编号设置为i=2*i,并返回步骤(2-1-2)。
(2-1-6)构建编号为i的结点的右子树的根结点,设置j=j+1,将该右子树的根结点的编号设置为i=(2*i+1),并返回步骤(2-1-2)。
优选地,步骤(2-1-1)的根节点的建立首先是针对向量组{x1,x2,…,xn}中所有向量的第一维而言,确定所有向量的第一维的方差,然后针对向量组{x1,x2,…,xn}中所有向量的第二维而言,确定所有向量的第二维的方差,…,以此类推,然后,从得到的所有维的方差中选择最大值对应的维度,以该维中的中位数所在的向量作为根节点构建K维树。
优选地,步骤(3)包括以下子步骤:
(3-1)利用语法解析库对p个聚类中的向量对应的每个查询模板进行解析,以得到每个查询模板对应的抽象语法树AST结构。
(3-2)针对步骤(3-1)得到的每个查询模板对应的AST结构而言,依次遍历AST结构中的每个节点以确定其字段类型,将确定的等值条件字段、排序条件字段和范围条件字段分别加入等值字段数组、排序字段数组和范围字段数组,将其他类型的字段加入另外一个数组,并去除上述四个数组中的冗余字段,即在排序字段数组中去除包含在等值字段数组中的字段,在范围字段数组中去除包含在等值字段数组和排序字段数组中的字段,在另外一个数组中去除包含在等值字段数组、排序字段数组和范围字段数组中的字段;
(3-3)依次从步骤(3-2)得到的等值字段数组、排序字段数组和范围字段数组、以及另外一个数组中取出所有字段组合成复合索引,并限定复合索引的最大宽度不大于a,从而得到最终的索引配置,其中a的取值范围是3到5之间,优选为5。
按照本发明的另一方面,提供了一种基于慢查询日志的云数据库二级索引自动推荐系统,包括:
第一模块,用于从数据库中的慢查询日志中获取过去一段时间内的查询语句以及该查询语句到达数据库的时间所组成的查询工作负载集{Q1,Q2,…,QR},利用正则表达式匹配该查询工作负载集中每个查询语句中的多个常量,将匹配到的每个常量替换为占位符,将替换操作后得到的所有查询语句中重复的查询语句删除,从而得到n个查询模板组成的查询模板集合{T1,T2,…,Tn},对该查询模板集合进行向量化处理,以得到查询模板集合对应的向量组{x1,x2,…,xn},其中Qi表示第i个查询语句及其到达数据库的时间,且有i∈[1,R],R表示查询工作负载集中的元素总数,xj表示第j个查询模板向量化后的结果,且有j∈[1,n];
第二模块,用于使用第一模块得到的查询模板集合对应的向量组构建K维树,利用构建的K维树,并根据改进后的具有噪声的基于密度的聚类方法对向量组进行聚类,以得到p个聚类,其中p的取值范围是3到5之间;
第三模块,用于对第二模块得到的p个聚类中的向量对应的查询模板中的字段以及谓词信息进行解析,以得到查询工作负载集对应的索引配置。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)由于本发明采用步骤(1),将查询语句集合模板化,有效减少了需要处理的查询数量,用少量的查询模板反映了大量工作负载的查询模式,能够为不同的工作负载推荐合适的索引配置,因此能够解决现有的索引推荐方法由于模型通用性差、只能为单一查询集合推荐索引配置,导致无法适用于云数据库业务场景的技术问题;
(2)由于本发明采用步骤(2),根据查询模板的到达时间对查询模板进行聚类,然后使用基于规则的策略对p个类中的查询模板进行分析,从而能够为大量工作负载推荐合适的索引配置,相较于现有索引推荐方法只能为包含少量查询的查询集合推荐索引配置的情况,更符合云数据库的业务需求;
(3)由于本发明采用步骤(3)对查询模板进行解析,省去了传统方法中在数据库中执行查询语句得到查询时间的步骤,减少了索引推荐的时间,且不需要与数据库进行交互,因此能够解决现有基于机器学习的方法由于模型的训练耗时长,且需要与数据库交互,导致无法适用于云数据库业务场景的技术问题;
(4)由于本发明采用步骤(1)将查询语句模板化并根据查询语句的到达时间将查询模板向量化,能够快速有效地提取查询工作负载的特征。因此能够解决了机器学习方法的模型输入特征计算时间长,在云数据库业务场景下难以获取的问题,更符合实际的业务场景。
附图说明
图1是本发明基于慢查询日志的云数据库二级索引推荐方法的整体框架示意图;
图2是本发明在云数据库实例的工作负载上的索引推荐后工作负载执行时间的变化图;
图3是本发明基于慢查询日志的云数据库二级索引推荐方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明是基于聚类分析和基于规则的词法分析基础上实现的,通过对基于密度的聚类算法DBSCAN进行优化,利用模板的到达率信息,在构建KD-Tree的基础上快速对高维向量进行聚类,进而采用基于规则的词法分析构建合适的索引,不仅加快了索引推荐的速度,且能够为大量工作负载推荐出有效的索引组合,提升了云数据库的查询性能。
如图1和图3所示,本发明提供了一种基于慢查询日志的云数据库二级索引自动推荐方法,包括以下步骤:
(1)从数据库中的慢查询日志中获取过去一段时间内的查询语句以及该查询语句到达数据库的时间所组成的查询工作负载集{Q1,Q2,…,QR},利用正则表达式匹配该查询工作负载集中每个查询语句中的多个常量(其包括数字、字母等),将匹配到的每个常量替换为占位符(例如“#”、“*”等),将替换操作后得到的所有查询语句中重复的查询语句删除,从而得到n个查询模板组成的查询模板集合{T1,T2,…,Tn},对该查询模板集合进行向量化处理,以得到查询模板集合对应的向量组{x1,x2,…,xn},其中Qi表示第i个查询语句及其到达数据库的时间,且有i∈[1,R],R表示查询工作负载集中的元素总数,xj表示第j个查询模板向量化后的结果,且有j∈[1,n];
具体而言,本步骤中向量化处理的过程,是针对每一个查询模板Tj而言,根据其对应的多个查询语句所对应的到达数据库的时间{t1,t2,…,tm},其中m表示查询模板Tj对应的查询语句的个数,以分钟为间隔,并根据该查询模板每分钟在数据库中出现的次数来对查询模板进行向量化,以得到查询模板Tj向量化后的结果xj,其是一个1440*7维的向量,且有:
xj=(cj,1,…,cj,N,cj,N+1,…,cj,10080)
其中cj,k表示步骤(1)的日志获取过程开始后的第k分钟里查询模板Tj在数据库中出现的次数,且有k∈[1,1440*7]。
本步骤的优点在于,查询模板以及查询的到达时间方便获取且能够有效反应出查询工作负载的特征。
(2)使用步骤(1)得到的查询模板集合对应的向量组构建K维树(K-dimensionalTree,简称KD-Tree),利用构建的K维树,并根据改进后的具有噪声的基于密度的聚类方法(Density-Based Spatial Clustering of Applications withNoise,简称DBSCAN)对向量组进行聚类,以得到p个聚类(在本发明中p的取值范围是3到5之间,优选为3);
具体而言,本步骤具体包括以下子步骤:
(2-1)使用步骤(1)得到的查询模板集合对应的向量组构建K维树。
本子步骤的优点在于,在对向量组进行聚类的过程中能够快速在高维空间中寻找到离向量最近的聚类中心。
具体而言,本步骤中构建K维树的过程包括以下子步骤:
(2-1-1)建立K维树的根节点,并设置树的根节点的编号i=1,节点数j=1;
具体而言,本步骤的根节点的建立首先是针对向量组{x1,x2,…,xn}中所有向量的第一维而言,确定所有向量的第一维的方差,然后针对向量组{x1,x2,…,xn}中所有向量的第二维而言,确定所有向量的第二维的方差,…,以此类推,然后,从得到的所有维的方差中选择最大值对应的维度,以该维中的中位数所在的向量作为根节点构建K维树。
(2-1-2)判断i是否小于向量组中向量的总数n,如果是则转入步骤(2-1-3),否则转入(2-1-5);
需要说明的是,当i>n时,说明编号为i的节点没有左右子树了,需要找到其父节点,并试着去构建父节点的右子树。
(2-1-3)判断j是否小于等于n,如果是则转入步骤(2-1-4),否则说明K维树构造完成,过程结束;
(2-1-4)构建编号为i的节点的左子树的根节点(此处构建树的根节点的过程与步骤(2-1-1)相同),设置j=j+1,并将左子树的根节点的编号设置为i=2*i,并返回步骤(2-1-2);
需要说明的是,由K维树的结点的计算公式知,左子树根结点编号应为其父树根结点编号的2倍。
(2-1-6)构建编号为i的结点的右子树的根结点(此处构建树的根节点的过程与步骤(2-1-1)相同),设置j=j+1,将该右子树的根结点的编号设置为i=(2*i+1),并返回步骤(2-1-2)。
需要说明的是,由K维树的结点编号的计算公式知,右子树根结点编号应为其父树根结点编号的2倍加1。
(2-2)将向量组中的第一个向量设置为当前聚类中心;
(2-3)对于向量组中的每一个向量而言,计算其与当前聚类中心之间的余弦相似度是否大于等于阈值ρ(其取值范围是0.6到1,优选为0.8),如果是则将该向量归入当前聚类,否则为该向量创建一个新的聚类;
(2-4)计算每一个聚类的聚类中心,并使用每一聚类的聚类中心以及向量组中的所有向量构建K维树(该过程与步骤(2-1)中完全相同)。
具体而言,如果某个聚类中已经有大于一个向量,则该聚类的聚类中心是该聚类中包含的所有向量的算术平均值,如果某个聚类中只有一个向量,则该向量就是该聚类的聚类中心。
(2-5)设置标志位w=0;
(2-6)针对第一个聚类而言,计算该聚类中的第一个向量与该聚类的聚类中心之间的余弦相似度,如果余弦相似度小于等于ρ,则将该向量从其所属聚类中移除,将标志位w设置为1,并根据步骤(2-4)构建的K维树查找距离该向量最近的聚类中心,并将该向量移到该聚类中心所在聚类中,针对该聚类中的剩余所有向量,重复执行上述过程,直到该聚类中的所有向量都被处理完毕为止;
(2-7)针对剩余所有聚类,重复上述步骤(2-6),直到所有聚类都处理完毕为止,并判断w是否等于1,如果是则返回步骤(2-4),否则进入步骤(2-8);
(2-8)针对得到的所有聚类的两两组合而言,计算第一个两两组合中两个聚类的聚类中心之间的余弦相似度,并判断该余弦相似度是否大于ρ,如果是则合并这两个聚类,否则针对剩余的两两组合,重复本步骤,直到所有两两组合都计算完毕为止,从而得到更新后的多个聚类;
(2-9)根据步骤(2-8)中更新后的多个聚类中包含的向量个数,选取向量个数排名前p的聚类构成最终的p个聚类。
本步骤的优点在于,能够有效减少需要分析的查询模板数量同时不会丢失查询工作负载的特征信息。
(3)对步骤(2)中得到的p个聚类中的向量对应的查询模板中的字段以及谓词信息进行解析,以得到查询工作负载集对应的索引配置。
具体而言,本步骤包括以下子步骤:
(3-1)利用语法解析库对p个聚类中的向量对应的每个查询模板进行解析,以得到每个查询模板对应的抽象语法树结构(Abstract Syntax Tree,简称AST)。
(3-2)针对步骤(3-1)得到的每个查询模板对应的AST结构而言,依次遍历AST结构中的每个节点以确定其字段类型,将确定的等值条件字段、排序条件字段和范围条件字段分别加入等值字段数组、排序字段数组和范围字段数组,将其他类型的字段加入另外一个数组,并去除上述四个数组中的冗余字段,即在排序字段数组中去除包含在等值字段数组中的字段,在范围字段数组中去除包含在等值字段数组和排序字段数组中的字段,在另外一个数组中去除包含在等值字段数组、排序字段数组和范围字段数组中的字段。
本子步骤的优点在于,能够在不需要与数据库交互的情况下找到查询模板中可以构建高效索引的字段。
(3-3)依次从步骤(3-2)得到的等值字段数组、排序字段数组和范围字段数组、以及另外一个数组中取出所有字段组合成复合索引,并限定复合索引的最大宽度不大于a(a的取值范围是3到5之间,优选为5),从而得到最终的索引配置。
实验结果
本发明实验环境:CPU为8枚Intel(R)Xeon(R)Platinum 8255C CPU@2.50GHz,内存为16GB DDR4,硬盘容量为500G,在CentOS Linux release 7.9操作系统下,数据库为MongoDB(v4.0.20),采用Python实现本文算法。
为了说明本发明可以根据慢查询日志为实际的工作负载推荐出优秀的索引配置,实验采用了云服务提供商的云数据库系统中部分实例的慢查询日志和相应的真实数据集。如表1所示,集合1和集合2分别为云数据库某一实例上的两个集合的慢查询日志信息。图2给出了利用本发明方法为工作负载推荐索引前后的慢查询执行时间变化。由图2可知,本发明利用慢查询日志中的大量工作负载能够推荐合适的索引,有效降低查询的执行时间,提升云服务提供商的服务质量和用户的使用体验。相比于优化前,本发明方法使得慢查询日志中的慢查询集合的执行时间降低了98%以上。
表1
集合名 | 集合1 | 集合2 |
日志数据量 | 750000 | 210000 |
统计周期(天) | 13 | 13 |
属性总数 | 29 | 31 |
测试集查询数 | 1000 | 459 |
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种基于慢查询日志的云数据库二级索引自动推荐方法,其特征在于,包括以下步骤:
(1)从数据库中的慢查询日志中获取过去一段时间内的查询语句以及该查询语句到达数据库的时间所组成的查询工作负载集{Q1,Q2,...,QR},利用正则表达式匹配该查询工作负载集中每个查询语句中的多个常量,将匹配到的每个常量替换为占位符,将替换操作后得到的所有查询语句中重复的查询语句删除,从而得到n个查询模板组成的查询模板集合{T1,T2,...,Tn},对该查询模板集合进行向量化处理,以得到查询模板集合对应的向量组{x1,x2,...,xn},其中Qi表示第i个查询语句及其到达数据库的时间,且有i∈[1,R],R表示查询工作负载集中的元素总数,xj表示第j个查询模板向量化后的结果,且有j∈[1,n]。
(2)使用步骤(1)得到的查询模板集合对应的向量组构建K维树,利用构建的K维树,并根据改进后的具有噪声的基于密度的聚类方法对向量组进行聚类,以得到p个聚类,其中p的取值范围是3到5之间;
(3)对步骤(2)中得到的p个聚类中的向量对应的查询模板中的字段以及谓词信息进行解析,以得到查询工作负载集对应的索引配置。
2.根据权利要求1所述的基于慢查询日志的云数据库二级索引自动推荐方法,其特征在于,步骤(1)中向量化处理的过程,是针对每一个查询模板Tj而言,根据其对应的多个查询语句所对应的到达数据库的时间{t1,t2,...,tm},其中m表示查询模板Tj对应的查询语句的个数,以分钟为间隔,并根据该查询模板每分钟在数据库中出现的次数来对查询模板进行向量化,以得到查询模板Tj向量化后的结果xj,其是一个1440*7维的向量,且有:
xj=(cj,1,…,cj,N,cj,N+1,...,cj,10080)
其中cj,k表示步骤(1)的日志获取过程开始后的第k分钟里查询模板Tj在数据库中出现的次数,且有k∈[1,1440*7]。
3.根据权利要求1或2所述的基于慢查询日志的云数据库二级索引自动推荐方法,其特征在于,步骤(2)具体包括以下子步骤:
(2-1)使用步骤(1)得到的查询模板集合对应的向量组构建K维树。
(2-2)将向量组中的第一个向量设置为当前聚类中心;
(2-3)对于向量组中的每一个向量而言,计算其与当前聚类中心之间的余弦相似度是否大于等于阈值ρ(其取值范围是0.6到1,优选为0.8),如果是则将该向量归入当前聚类,否则为该向量创建一个新的聚类;
(2-4)计算每一个聚类的聚类中心,并使用每一聚类的聚类中心以及向量组中的所有向量构建K维树(该过程与步骤(2-1)中完全相同)。
具体而言,如果某个聚类中已经有大于一个向量,则该聚类的聚类中心是该聚类中包含的所有向量的算术平均值,如果某个聚类中只有一个向量,则该向量就是该聚类的聚类中心。
(2-5)设置标志位w=0;
(2-6)针对第一个聚类而言,计算该聚类中的第一个向量与该聚类的聚类中心之间的余弦相似度,如果余弦相似度小于等于ρ,则将该向量从其所属聚类中移除,将标志位w设置为1,并根据步骤(2-4)构建的K维树查找距离该向量最近的聚类中心,并将该向量移到该聚类中心所在聚类中,针对该聚类中的剩余所有向量,重复执行上述过程,直到该聚类中的所有向量都被处理完毕为止;
(2-7)针对剩余所有聚类,重复上述步骤(2-6),直到所有聚类都处理完毕为止,并判断w是否等于1,如果是则返回步骤(2-4),否则进入步骤(2-8);
(2-8)针对得到的所有聚类的两两组合而言,计算第一个两两组合中两个聚类的聚类中心之间的余弦相似度,并判断该余弦相似度是否大于ρ,如果是则合并这两个聚类,否则针对剩余的两两组合,重复本步骤,直到所有两两组合都计算完毕为止,从而得到更新后的多个聚类;
(2-9)根据步骤(2-8)中更新后的多个聚类中包含的向量个数,选取向量个数排名前p的聚类构成最终的p个聚类。
4.根据权利要求1至3中任意一项所述的基于慢查询日志的云数据库二级索引自动推荐方法,其特征在于,步骤(2-1)中构建K维树的过程包括以下子步骤:
(2-1-1)建立K维树的根节点,并设置树的根节点的编号i=1,节点数j=1;
(2-1-2)判断i是否小于向量组中向量的总数n,如果是则转入步骤(2-1-3),否则转入(2-1-5);
(2-1-3)判断j是否小于等于n,如果是则转入步骤(2-1-4),否则说明K维树构造完成,过程结束;
(2-1-4)构建编号为i的节点的左子树的根节点,设置j=j+1,并将左子树的根节点的编号设置为i=2*i,并返回步骤(2-1-2)。
(2-1-6)构建编号为i的结点的右子树的根结点,设置j=j+1,将该右子树的根结点的编号设置为i=(2*i+1),并返回步骤(2-1-2)。
5.根据权利要求4所述的基于慢查询日志的云数据库二级索引自动推荐方法,其特征在于,步骤(2-1-1)的根节点的建立首先是针对向量组{x1,x2,...,xn}中所有向量的第一维而言,确定所有向量的第一维的方差,然后针对向量组{x1,x2,...,xn}中所有向量的第二维而言,确定所有向量的第二维的方差,…,以此类推,然后,从得到的所有维的方差中选择最大值对应的维度,以该维中的中位数所在的向量作为根节点构建K维树。
6.根据权利要求1所述的基于慢查询日志的云数据库二级索引自动推荐方法,其特征在于,步骤(3)包括以下子步骤:
(3-1)利用语法解析库对p个聚类中的向量对应的每个查询模板进行解析,以得到每个查询模板对应的抽象语法树AST结构。
(3-2)针对步骤(3-1)得到的每个查询模板对应的AST结构而言,依次遍历AST结构中的每个节点以确定其字段类型,将确定的等值条件字段、排序条件字段和范围条件字段分别加入等值字段数组、排序字段数组和范围字段数组,将其他类型的字段加入另外一个数组,并去除上述四个数组中的冗余字段,即在排序字段数组中去除包含在等值字段数组中的字段,在范围字段数组中去除包含在等值字段数组和排序字段数组中的字段,在另外一个数组中去除包含在等值字段数组、排序字段数组和范围字段数组中的字段;
(3-3)依次从步骤(3-2)得到的等值字段数组、排序字段数组和范围字段数组、以及另外一个数组中取出所有字段组合成复合索引,并限定复合索引的最大宽度不大于a,从而得到最终的索引配置,其中a的取值范围是3到5之间,优选为5。
7.一种基于慢查询日志的云数据库二级索引自动推荐系统,其特征在于,包括:
第一模块,用于从数据库中的慢查询日志中获取过去一段时间内的查询语句以及该查询语句到达数据库的时间所组成的查询工作负载集{Q1,Q2,...,QR},利用正则表达式匹配该查询工作负载集中每个查询语句中的多个常量,将匹配到的每个常量替换为占位符,将替换操作后得到的所有查询语句中重复的查询语句删除,从而得到n个查询模板组成的查询模板集合{T1,T2,...,Tn},对该查询模板集合进行向量化处理,以得到查询模板集合对应的向量组{x1,x2,...,xn},其中Qi表示第i个查询语句及其到达数据库的时间,且有i∈[1,R],R表示查询工作负载集中的元素总数,xj表示第j个查询模板向量化后的结果,且有j∈[1,n];
第二模块,用于使用第一模块得到的查询模板集合对应的向量组构建K维树,利用构建的K维树,并根据改进后的具有噪声的基于密度的聚类方法对向量组进行聚类,以得到p个聚类,其中p的取值范围是3到5之间;
第三模块,用于对第二模块得到的p个聚类中的向量对应的查询模板中的字段以及谓词信息进行解析,以得到查询工作负载集对应的索引配置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111330011.2A CN114064689A (zh) | 2021-11-11 | 2021-11-11 | 基于慢查询日志的云数据库二级索引自动推荐方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111330011.2A CN114064689A (zh) | 2021-11-11 | 2021-11-11 | 基于慢查询日志的云数据库二级索引自动推荐方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114064689A true CN114064689A (zh) | 2022-02-18 |
Family
ID=80274894
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111330011.2A Pending CN114064689A (zh) | 2021-11-11 | 2021-11-11 | 基于慢查询日志的云数据库二级索引自动推荐方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114064689A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116483831A (zh) * | 2023-04-12 | 2023-07-25 | 上海沄熹科技有限公司 | 一种分布式数据库推荐索引生成方法 |
-
2021
- 2021-11-11 CN CN202111330011.2A patent/CN114064689A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116483831A (zh) * | 2023-04-12 | 2023-07-25 | 上海沄熹科技有限公司 | 一种分布式数据库推荐索引生成方法 |
CN116483831B (zh) * | 2023-04-12 | 2024-01-30 | 上海沄熹科技有限公司 | 一种分布式数据库推荐索引生成方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9916350B2 (en) | Automated creation of join graphs for unrelated data sets among relational databases | |
US6138115A (en) | Method and system for generating a decision-tree classifier in parallel in a multi-processor system | |
Jin et al. | Efficient decision tree construction on streaming data | |
CN106991141B (zh) | 一种基于深度剪枝策略的关联规则挖掘方法 | |
Maree et al. | Real-valued evolutionary multi-modal optimization driven by hill-valley clustering | |
CN107291895B (zh) | 一种快速的层次化文档查询方法 | |
CN110598061A (zh) | 一种多元图融合的异构信息网嵌入方法 | |
Tang et al. | Efficient Processing of Hamming-Distance-Based Similarity-Search Queries Over MapReduce. | |
Xue et al. | Optimizing ontology alignment through compact MOEA/D | |
CN111125199B (zh) | 一种数据库访问方法、装置及电子设备 | |
CN115795061A (zh) | 一种基于词向量和依存句法的知识图谱构建方法及系统 | |
CN114064689A (zh) | 基于慢查询日志的云数据库二级索引自动推荐方法和系统 | |
CN116628136A (zh) | 基于声明式推理的协同查询处理方法、系统、电子设备 | |
CN114168733B (zh) | 一种基于复杂网络的法规检索方法及系统 | |
CN106933844A (zh) | 面向大规模rdf数据的可达性查询索引的构建方法 | |
John et al. | Dynamic sorting and average skyline method for query processing in spatial-temporal data | |
CN114969279A (zh) | 一种基于层次图神经网络的表格文本问答方法 | |
CN114036345A (zh) | 一种轨迹数据的处理方法、设备及存储介质 | |
Kashef et al. | Distributed cooperative hard-fuzzy document clustering | |
Yamagishi et al. | Pivot generation algorithm with a complete binary tree for efficient exact similarity search | |
CN110096529B (zh) | 一种基于多维矢量数据的网络数据挖掘方法和系统 | |
Shaohong et al. | Web page classification based on semi-supervised naïve bayesian em algorithm | |
CN117610541B (zh) | 大规模数据的作者消歧方法、装置及可读存储介质 | |
CN116361470B (zh) | 一种基于话题描述的文本聚类清洗和合并方法 | |
CN115374223B (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 |