CN115062011A - 一种面向关系数据库的智能索引调优方法及系统 - Google Patents
一种面向关系数据库的智能索引调优方法及系统 Download PDFInfo
- Publication number
- CN115062011A CN115062011A CN202210559811.XA CN202210559811A CN115062011A CN 115062011 A CN115062011 A CN 115062011A CN 202210559811 A CN202210559811 A CN 202210559811A CN 115062011 A CN115062011 A CN 115062011A
- Authority
- CN
- China
- Prior art keywords
- index
- candidate
- query statement
- value
- query
- 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/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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施例公开了一种面向关系数据库的智能索引调优方法及系统。该方法的一具体实施方式包括:对查询日志中的每条查询语句进行解析,以生成查询语句解析树,得到查询语句解析树集合;基于查询语句解析树集合,生成候选索引集合;确定候选索引集合中的每个候选索引的索引优化值;从候选索引集合中选择满足预设条件的至少一个候选索引作为调优索引集合,其中,预设条件为至少一个候选索引中各个候选索引的索引大小的和小于等于预设阈值,且各个候选索引的索引优化值的和最大;将调优索引集合存储至目标数据库。该实施方式动态地对数据库实例的索引进行调整,有效地对索引进行优化,从而实现数据库系统查询性能的提升。
Description
技术领域
本公开的实施例涉及计算机技术领域,具体涉及一种面向关系数据库的智能索引调优方法及系统。
背景技术
智能索引调优是对数据库实例进行索引调节,从而保持数据库高效的查询性能的一种技术。目前,在进行索引调优时,通常采用的方式为:先从查询日志中得到推荐索引,再利用人工设计的模型选择索引,从而调节索引。
然而,当采用上述方式进行索引调优时,经常会存在如下技术问题:
第一,无法动态地对数据库实例的索引进行调整,导致无法有效调节索引,实时提高数据查询效率;
第二,从查询日志中产生的推荐索引不存在于数据库实例中时,不能根据这类未实际存在的索引对于查询的查询优化效果准确地生成最优索引;
第三,无法从大量候选索引中快速生成最优索引,导致生成索引的速度较慢。
发明内容
本公开的内容部分用于以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。本公开的内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
本公开的一些实施例提出了一种面向关系数据库的智能索引调优方法及系统,来解决以上背景技术部分提到的技术问题中的一项或多项。
第一方面,本公开的一些实施例提供了一种面向关系数据库的智能索引调优方法,该方法包括:对查询日志中的每条查询语句进行解析,以生成查询语句解析树,得到查询语句解析树集合;基于上述查询语句解析树集合,生成候选索引集合;确定上述候选索引集合中的每个候选索引的索引优化值;从上述候选索引集合中选择满足预设条件的至少一个候选索引作为调优索引集合,其中,上述预设条件为上述至少一个候选索引中各个候选索引的索引大小的和小于等于预设阈值,且上述各个候选索引的索引优化值的和最大;将上述调优索引集合存储至目标数据库。
第二方面,本公开的一些实施例提供了一种面向关系数据库的智能索引调优系统,系统包括:解析单元,被配置成对查询日志中的每条查询语句进行解析,以生成查询语句解析树,得到查询语句解析树集合;生成单元,被配置成基于上述查询语句解析树集合,生成候选索引集合;确定单元,被配置成确定上述候选索引集合中的每个候选索引的索引优化值;选择单元,被配置成从上述候选索引集合中选择满足预设条件的至少一个候选索引作为调优索引集合;存储单元,被配置成将上述调优索引集合存储至目标数据库。
第三方面,本公开的一些实施例提供了一种电子设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现上述第一方面任一实现方式所描述的方法。
第四方面,本公开的一些实施例提供了一种计算机可读介质,其上存储有计算机程序,其中,程序被处理器执行时实现上述第一方面任一实现方式所描述的方法。
本公开的上述各个实施例中具有如下有益效果:通过本公开的一些实施例的面向关系数据库的智能索引调优方法,能够有效调节索引,实时提高数据查询速率。具体来说,造成无法有效调节索引的原因在于:无法动态地对数据库实例的索引进行调整。基于此,本公开的一些实施例的面向关系数据库的智能索引调优方法包括:首先,对查询日志中的每条查询语句进行解析,以生成查询语句解析树,得到查询语句解析树集合。从而,可以通过对应用的查询日志进行分析,动态地对数据库实例的索引进行调整。然后,基于上述查询语句解析树集合,生成候选索引集合。从而,后续可以从中挑选出查询优化效果最好的索引集合。再然后,确定上述候选索引集合中的每个候选索引的索引优化值。从而,将每个候选索引对于查询的查询优化效果进行量化,可以直观地体现每个候选索引的查询优化效果。接着,从上述候选索引集合中选择满足预设条件的至少一个候选索引作为调优索引集合。其中,上述预设条件为上述至少一个候选索引中各个候选索引的索引大小的和小于等于预设阈值,且上述各个候选索引的索引优化值的和最大。从而,得到了不超过预设阈值且查询优化效果最好的索引集合。最后,将上述调优索引集合存储至目标数据库。从而,可以在目标数据库中使用调优后的索引查询数据。由此,可以在不同应用场景下,通过对不同的查询语句的分析,实现动态地对数据库实例的索引进行调整,有效地对索引进行优化,从而实现数据库系统查询性能的提升。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,元件和元素不一定按照比例绘制。
图1是根据本公开的面向关系数据库的智能索引调优方法的一些实施例的流程图;
图2是根据本公开的面向关系数据库的智能索引调优系统的一些实施例的结构示意图;
图3是适于用来实现本公开的一些实施例的电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例。相反,提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
下面将参考附图并结合实施例来详细说明本公开。
图1示出了根据本公开的面向关系数据库的智能索引调优方法的一些实施例的流程100。该面向关系数据库的智能索引调优方法,包括以下步骤:
步骤101,对查询日志中的每条查询语句进行解析,以生成查询语句解析树,得到查询语句解析树集合。
在一些实施例中,面向关系数据库的智能索引调优方法的执行主体(例如计算设备)可以对查询日志中的每条查询语句进行解析,以生成查询语句解析树,得到查询语句解析树集合。其中,上述查询语句解析树可以是以解析树形式表示的查询语句。
实践中,上述执行主体可以通过开源的词法解析器与语法解析器对查询日志中的每条查询语句进行解析,以生成查询语句解析树,得到查询语句解析树集合。
步骤102,基于查询语句解析树集合,生成候选索引集合。
在一些实施例中,上述执行主体可以基于上述查询语句解析树集合,生成候选索引集合。
在一些实施例的一些可选的实现方式中,上述执行主体基于上述查询语句解析树集合,生成候选索引集合,可以包括以下步骤:
对于上述查询日志中的每条查询语句,执行以下索引生成步骤:
第一步,根据上述查询语句对应的查询语句解析树,确定上述查询语句中包含的字段集合。
实践中,上述执行主体可以将上述查询语句对应的查询语句解析树中包含的各个字段确定为字段集合。例如,上述查询语句可以是“SELECT CNO,FNAME FROM CUST WHERELNAME=:LNAME AND CNO>:CNO ORDER BY FNAME”,根据上述查询语句对应的查询语句解析树,可以确定上述查询语句中包含的字段集合为{CNO,FNAME,LNAME}。
第二步,对上述字段集合中的字段进行组合,以生成至少一个满足预设评估条件的标准字段组合。
实践中,上述执行主体可以对上述字段集合中的字段进行组合,将满足预设评估条件的字段组合作为标准字段组合。其中,上述预设评估条件可以是字段组合至少满足索引三星评估标准之一。满足预设评估条件的标准字段组合可以包括:(LNAME,CNO),(LNAME,CNO,FNAME),(LNAME,FNAME,CNO)。
第三步,将上述查询语句的选择条件语句中包含的选择字段集合的各个字段子集和上述至少一个标准字段组合确定为候选索引。
其中,上述选择条件语句可以是where条件语句。上述选择字段集合可以是上述选择条件语句包含的各个字段的集合。实践中,上述执行主体可以将上述查询语句的选择条件语句中包含的选择字段集合的各个字段子集和上述至少一个标准字段组合确定为候选索引。例如,上述查询语句的选择条件语句中包含的选择字段集合可以是{LNAME,CNO}。上述候选索引可以有(CNO),(LNAME),(LNAME,CNO),(LNAME,CNO,FNAME),(LNAME,FNAME,CNO)。
步骤103,确定候选索引集合中的每个候选索引的索引优化值。
在一些实施例中,上述执行主体可以确定候选索引集合中的每个候选索引的索引优化值。其中,上述索引优化值可以表征对应的候选索引对于数据库系统的查询优化程度。
在一些实施例的一些可选的实现方式中,对于上述候选索引集合中的每个候选索引,上述执行主体可以执行以下步骤:
第一步,利用预先训练的目标值预测模型,确定上述候选索引对于上述查询日志中每条查询语句的目标值,得到目标值集合。
其中,上述目标值预测模型是以上述候选索引和上述查询语句的特征属性为输入、以目标值为输出的模型。实践中,上述执行主体可以将预先训练的目标值预测模型得到的输出结果确定为候选索引对于上述查询日志中每条查询语句的目标值。上述目标值集合中的目标值是存在上述候选索引时执行上述查询语句所需的执行时间,与不存在上述候选索引时执行上述查询语句所需的执行时间之间的差值,表征上述候选索引对于上述与目标值对应的查询语句所能取得的查询优化效果。
可选地,上述目标值预测模型可以是通过以下模型生成步骤得到的:
第一步,获取查询语句样本集合和索引样本集合。
实践中,上述执行主体可以将查询日志中第一目标数量的查询语句和第二目标数量的索引分别作为查询语句样本和索引样本,得到查询语句样本集合和索引样本集合。例如,上述第一目标数量可以是2000。上述第二目标数量可以是100。
第二步,根据上述查询语句样本集合和上述索引样本集合,生成特征属性集合。
其中,上述特征属性集合中的特征属性可以为但不限于:查询语句样本的类别(例如,可以是select)、查询语句样本所涉及的表的记录的数量、查询语句样本中包含的操作符的个数(例如,上述操作符可以是加号、减号或赋值等)、查询语句样本中选择条件语句后所涉及的字段的编码(例如,上述编码可以是utf-8,utf-8是一种可变长度字符编码)、索引样本所在的数据库中的表的记录的数量、索引样本中包含的字段的数量、索引样本所包含的字段的编码、查询语句样本对于索引样本是否满足前缀调用原则的标识、查询语句样本是否会导致索引样本的更新的标识。上述前缀调用原则可以是查询语句样本的选择条件语句中包含了索引样本的前缀字段。
实践中,上述执行主体可以将上述查询语句样本集合中的查询语句样本的属性特征和上述索引样本集合中的索引样本的属性特征作为特征属性,得到特征属性集合。上述特征属性集合中的特征属性均为查询语句样本在编译阶段可获取到的属性值。其中,上述查询语句样本的类别、上述查询语句样本所涉及的表的记录的数量、上述查询语句样本中包含的操作符的个数、上述索引样本所在的数据库中的表的记录的数量和上述索引样本中包含的字段的数量均为在解析阶段可得到的属性值。将数据库实例中的表中所有字段按照某一顺序进行排列,再将查询语句样本与索引样本中使用的字段按照该顺序进行独热编码,则得到上述查询语句样本中选择条件语句后所涉及的字段的编码和上述索引样本所包含的字段的编码。由于在解析阶段可以比较查询语句样本是否满足索引样本的前缀调用原则,以及查询语句样本中更新的字段是否包含了索引样本中的字段,因此可得到上述查询语句样本对于索引样本是否满足前缀调用原则的标识和查询语句样本是否会导致索引样本的更新的标识。
第三步,基于上述特征属性集合,分别对至少一个初始目标值预测子模型进行模型训练,得到至少一个目标值预测子模型。
实践中,上述执行主体可以将上述查询语句样本集合中的每个查询语句样本与上述索引样本集合中的每个索引样本进行组合,将每个组合中的查询语句样本与索引样本的特征属性输入至少一个初始目标值预测子模型进行模型训练,将训练完成的模型作为至少一个目标值预测子模型。其中,上述至少一个初始目标值预测子模型可以包括但不限于线性预测模型、梯度提升决策树和DNN(Deep Neural Network,深度神经网络)。
第四步,确定上述至少一个目标值预测子模型中的每个目标值预测子模型的权重。
实践中,上述执行主体可以利用组合模型的方法确定上述至少一个目标值预测子模型中的每个目标值预测子模型的权重。
第五步,根据所确定的权重和上述至少一个目标值预测子模型,生成目标值预测模型。
实践中,上述执行主体可以根据各个目标值预测子模型的权重进行加权求和,得到目标值预测模型。
由此,可以为不同的子模型赋权重,从而将各个子模型的优点发挥至最大,使得到的目标值预测模型的输出结果准确度更高。进而可以更准确地预测候选索引对于查询的查询优化效果。
上述模型生成步骤及其相关内容作为本公开的实施例的一个发明点,解决了背景技术提及的技术问题二“从查询日志中产生的推荐索引可能并未实际存在于数据库实例中,导致不能根据这类未实际存在的索引对于查询的查询优化效果准确地生成最优索引。”。导致不能准确地生成最优索引的原因往往如下:索引未实际存在于数据库实例中,无法通过查询语句在索引存在与不存在这两种情况下的执行时间的差值来确定索引的目标值,即索引对于一个查询语句的查询优化效果。如果解决了上述因素,就能在即使索引未实际存在的情况下,也能确定索引的查询优化效果,进而生成最优索引。为了达到这一效果,首先,建立了目标值预测模型,并用历史数据进行训练。然后,利用训练好的目标值预测模型,确定真实索引或虚拟索引对于一个查询语句的查询优化效果。进而可以确定索引对于数据库系统的查询优化效果,生成最优索引。
第二步,将上述目标值集合中各个目标值的和确定为目标值总和。
第三步,确定上述候选索引的时间值。其中,上述时间值表征构建上述候选索引所需的时间。
在一些实施例的一些可选的实现方式中,上述执行主体可以通过以下步骤确定上述候选索引的时间值:
第一步,响应于确定上述候选索引为真实索引,将时间值确定为0。其中,上述真实索引是实际存在于数据库实例中的索引。
第二步,响应于确定上述候选索引为虚拟索引,将上述候选索引的索引大小和构建预设单位大小的索引所需的时间的乘积确定为时间值。其中,上述虚拟索引是通过查询日志产生的,实际不存在于数据库实例中的索引。上述预设单位大小可以是1MB。上述索引大小可以是索引所占字节的大小。
第四步,将第一数值与上述目标值总和的乘积和第二数值与上述时间值的乘积的差值确定为上述候选索引的索引优化值。其中,上述第一数值和上述第二数值可以是提前预设的且在预设取值范围内的数值,用于调节构建上述候选索引的代价对于上述候选索引的实用性的影响。上述预设取值范围可以是[0,1]。第一数值与上述目标值总和的乘积可以表征上述候选索引的查询优化效果。第二数值与上述时间值的乘积可以表征构建上述候选索引的时间代价。上述第一数值与上述第二数值的比值越大,表征越倾向于上述候选索引带来的优化效果,而非构建上述候选索引所需的代价。
步骤104,从候选索引集合中选择满足预设条件的至少一个候选索引作为调优索引集合。
在一些实施例中,上述执行主体可以从上述候选索引集合中选择满足预设条件的至少一个候选索引作为调优索引集合。其中,上述预设条件为上述至少一个候选索引中各个候选索引的索引大小的和小于等于预设阈值,且上述各个候选索引的索引优化值的和最大。上述预设阈值可以是用户给定的内存大小阈值。
在一些实施例的一些可选的实现方式中,上述执行主体可以通过以下步骤,从上述候选索引集合中选择满足预设条件的至少一个候选索引作为调优索引集合:
第一步,响应于确定候选索引集合不为空,根据候选索引集合和预设阈值,执行以下选择步骤:
第一子步骤,将候选索引集合在预设阈值限制下的哈希值确定为当前哈希值。
其中,上述哈希值表征候选索引集合在预设阈值限制下的最大索引优化值和最优候选索引集合。例如,候选索引集合为{索引1,索引2,索引3,索引4}。预设阈值为100MB。则哈希值为确定候选索引集合{索引1,索引2,索引3,索引4}在预设阈值100MB的限制下的最大索引优化值和最优候选索引集合。
第二子步骤,响应于确定目标哈希表中存在上述当前哈希值对应的最大索引优化值和最优候选索引集合,将上述最大索引优化值和上述最优候选索引集合确定为对应上述当前哈希值的最大索引优化值和最优候选索引集合。
其中,上述目标哈希表可以是存储上述哈希值的哈希表。
第三子步骤,响应于确定上述目标哈希表中不存在上述当前哈希值对应的最大索引优化值和最优候选索引集合,将候选索引集合中最后一个候选索引确定为末位候选索引,移除末位候选索引,将移除后的候选索引集合作为候选索引集合,再次执行上述选择步骤。
第二步,响应于确定候选索引集合为空,将0和空集合分别确定为对应当前哈希值的第一最大索引优化值和第一最优候选索引集合。
在一些实施例的一些可选的实现方式中,上述选择步骤,还包括以下回推步骤:
第一步,响应于确定预设阈值大于等于移除的末位候选索引的索引大小,执行以下步骤:
第一子步骤,将预设阈值与移除的末位候选索引的索引大小的差值确定为更新的预设阈值,再次执行上述选择步骤,将得到的0和空集合确定为当前哈希值的第二最大索引优化值和第二最优候选索引集合。
第二子步骤,将第一最大索引优化值与移除的末位候选索引的索引优化值的和确定为更新的第二最大索引优化值,以及将移除的末位候选索引添加至第一最优候选索引集合,将添加后的第一最优候选索引集合确定为更新的第二最优候选索引集合。
第三子步骤,响应于确定第一最大索引优化值大于等于第二最大索引优化值,将第一最大索引优化值和第一最优候选索引集合添加至上述目标哈希表中,以及将第一最大索引优化值和第一最优候选索引集合确定为当前哈希值的最大索引优化值和最优候选索引集合。
第四子步骤,响应于确定第一最大索引优化值小于第二最大索引优化值,将第二最大索引优化值和第二最优候选索引集合添加至上述目标哈希表中,以及将第二最大索引优化值和第二最优候选索引集合确定为当前哈希值的最大索引优化值和最优候选索引集合。
第二步,将上一次移除的末位候选索引添加至候选索引集合,执行以下步骤:
第一子步骤,将候选索引集合在预设阈值限制下的哈希值确定为当前哈希值。
例如,候选索引集合为{候选索引1,候选索引2},是移除了候选索引3得到的集合,则移除的末位候选索引为候选索引3。上一次移除的末位候选索引为候选索引4。将上一次移除的候选索引4添加至候选索引集合,得到更新的候选索引集合{候选索引1,候选索引2,候选索引3,候选索引4}。将该候选索引集合在预设阈值限制下的哈希值确定为当前哈希值。
第二子步骤,将最大索引优化值和最优候选索引集合确定为对应当前哈希值的第一最大索引优化值和第一最优候选索引集合,再次执行上述回推步骤。
第三步,将得到的最优候选索引集合确定为上述调优索引集合。
上述选择步骤和上述回推步骤及其相关内容作为本公开的实施例的一个发明点,解决了背景技术提及的技术问题三“无法从大量候选索引中快速生成最优索引,生成索引速度慢。”。导致生成索引速度慢的原因往往如下:当数据库实例较大时,预设阈值也较大,选择索引时需要枚举每一种空间限制下的局部解,导致很大的时间开销,并且大部分都与最终的最优索引无关。如果解决了上述因素,就能达到提高生成索引速度的效果。为了达到这一效果,利用哈希表存储选择过程中的每个哈希值,对于哈希表中不存在结果的哈希值,进一步比较候选索引集合中舍弃了一个索引与选择了一个索引的情况。根据这两类情况所能取得的索引优化值的大小,在哈希表中记录较大的索引优化值对应的结果作为当前哈希值的结果。由此,避免了问题的重复,提高了生成最优索引的速度。
步骤105,将上述调优索引集合存储至目标数据库。
在一些实施例中,上述执行主体可以将上述调优索引集合存储至目标数据库。其中,上述目标数据库可以是上述查询日志所对应的数据库,在目标数据库中可以使用上述调优索引集合中的调优索引查询数据。
通过本公开的一些实施例的面向关系数据库的智能索引调优方法,能够有效调节索引,实时提高数据查询速率。具体来说,造成无法有效调节索引的原因在于:无法动态地对数据库实例的索引进行调整。基于此,本公开的一些实施例的面向关系数据库的智能索引调优方法包括:首先,对查询日志中的每条查询语句进行解析,以生成查询语句解析树,得到查询语句解析树集合。从而,可以通过对应用的查询日志进行分析,动态地对数据库实例的索引进行调整。然后,基于上述查询语句解析树集合,生成候选索引集合。从而,后续可以从中挑选出查询优化效果最好的索引集合。再然后,确定上述候选索引集合中的每个候选索引的索引优化值。从而,将每个候选索引对于查询的查询优化效果进行量化,可以直观地体现每个候选索引的查询优化效果。接着,从上述候选索引集合中选择满足预设条件的至少一个候选索引作为调优索引集合,其中,上述预设条件为上述至少一个候选索引中各个候选索引的索引大小的和小于等于预设阈值,且上述各个候选索引的索引优化值的和最大。从而,得到了不超过预设阈值且查询优化效果最好的索引集合。最后,将上述调优索引集合存储至目标数据库。从而,可以在目标数据库中使用调优后的索引查询数据。由此,可以在不同应用场景下,通过对不同的查询语句的分析,实现动态地对数据库实例的索引进行调整,有效地对索引进行优化,从而实现数据库系统查询性能的提升。
进一步参考图2,作为对上述各图所示方法的实现,本公开提供了一种面向关系数据库的智能索引调优系统的一些实施例,这些系统实施例与图1所示的那些方法实施例相对应,该系统具体可以应用于各种电子设备中。
如图2所示,一些实施例的面向关系数据库的智能索引调优系统200包括:解析单元201、生成单元202、确定单元203、选择单元204和存储单元205。其中,解析单元201,被配置成对查询日志中的每条查询语句进行解析,以生成查询语句解析树,得到查询语句解析树集合;生成单元202,被配置成基于上述查询语句解析树集合,生成候选索引集合;确定单元203,被配置成确定上述候选索引集合中的每个候选索引的索引优化值;选择单元204,被配置成从上述候选索引集合中选择满足预设条件的至少一个候选索引作为调优索引集合;存储单元205,被配置成将上述调优索引集合存储至目标数据库。
可以理解的是,该系统200中记载的诸单元与参考图1描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作、特征以及产生的有益效果同样适用于系统100及其中包含的单元,在此不再赘述。
下面参考图3,其示出了适于用来实现本公开的一些实施例的电子设备300的结构示意图。图3示出的电子设备仅仅是一个示例,不应对本公开的实施例的功能和使用范围带来任何限制。
如图3所示,电子设备300可以包括处理装置(例如中央处理器、图形处理器等)301,其可以根据存储在只读存储器(ROM)302中的程序或者从存储装置308加载到随机访问存储器(RAM)303中的程序而执行各种适当的动作和处理。在RAM 303中,还存储有电子设备300操作所需的各种程序和数据。处理装置301、ROM 302以及RAM 303通过总线304彼此相连。输入/输出(I/O)接口305也连接至总线304。
通常,以下装置可以连接至I/O接口305:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置306;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置307;包括例如磁带、硬盘等的存储装置308;以及通信装置309。通信装置309可以允许电子设备300与其他设备进行无线或有线通信以交换数据。虽然图3示出了具有各种装置的电子设备300,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。图3中示出的每个方框可以代表一个装置,也可以根据需要代表多个装置。
特别地,根据本公开的一些实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的一些实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的一些实施例中,该计算机程序可以通过通信装置309从网络上被下载和安装,或者从存储装置308被安装,或者从ROM 302被安装。在该计算机程序被处理装置301执行时,执行本公开的一些实施例的方法中限定的上述功能。
需要说明的是,本公开的一些实施例中记载的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的一些实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开的一些实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:对查询日志中的每条查询语句进行解析,以生成查询语句解析树,得到查询语句解析树集合;基于上述查询语句解析树集合,生成候选索引集合;确定上述候选索引集合中的每个候选索引的索引优化值;从上述候选索引集合中选择满足预设条件的至少一个候选索引作为调优索引集合,其中,上述预设条件为上述至少一个候选索引中各个候选索引的索引大小的和小于等于预设阈值,且上述各个候选索引的索引优化值的和最大;将上述调优索引集合存储至目标数据库。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的一些实施例的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开的一些实施例中的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括解析单元、生成单元、确定单元、选择单元和存储单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,存储单元还可以被描述为“将上述调优索引集合存储至目标数据库的单元”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
以上描述仅为本公开的一些较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开的实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开的实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (7)
1.一种面向关系数据库的智能索引调优方法,包括:
对查询日志中的每条查询语句进行解析,以生成查询语句解析树,得到查询语句解析树集合;
基于所述查询语句解析树集合,生成候选索引集合;
确定所述候选索引集合中的每个候选索引的索引优化值;
从所述候选索引集合中选择满足预设条件的至少一个候选索引作为调优索引集合,其中,所述预设条件为所述至少一个候选索引中各个候选索引的索引大小的和小于等于预设阈值,且所述各个候选索引的索引优化值的和最大;
将所述调优索引集合存储至目标数据库。
2.根据权利要求1所述的方法,其中,所述基于所述查询语句解析树集合,生成候选索引集合,包括:
对于所述查询日志中的每条查询语句,执行以下索引生成步骤:
根据所述查询语句对应的查询语句解析树,确定所述查询语句中包含的字段集合;
对所述字段集合中的字段进行组合,以生成至少一个满足预设评估条件的标准字段组合;
将所述查询语句的选择条件语句中包含的选择字段集合的各个字段子集和所述至少一个标准字段组合确定为候选索引。
3.根据权利要求2所述的方法,其中,所述确定所述候选索引集合中的每个候选索引的索引优化值,包括:
对于所述候选索引集合中的每个候选索引,执行以下步骤:
利用预先训练的目标值预测模型,确定所述候选索引对于所述查询日志中每条查询语句的目标值,得到目标值集合,其中,所述目标值是存在所述候选索引时执行所述查询语句所需的时间,与不存在所述候选索引时执行所述查询语句所需的时间之间的差值;
将所述目标值集合中各个目标值的和确定为目标值总和;
确定所述候选索引的时间值,其中,所述时间值表征构建所述候选索引所需的时间代价;
将第一数值与所述目标值总和的乘积和第二数值与所述时间值的乘积的差值确定为所述候选索引的索引优化值,其中,所述第一数值和所述第二数值在预设取值范围内。
4.根据权利要求3所述的方法,其中,所述确定所述候选索引的时间值,包括:
响应于确定所述候选索引为真实索引,将时间值确定为0,其中,所述真实索引是实际存在于数据库实例中的索引;
响应于确定所述候选索引为虚拟索引,将所述候选索引的索引大小和构建预设单位大小的索引所需的时间的乘积确定为时间值,其中,所述虚拟索引是通过查询日志产生的,实际不存在于数据库实例中的索引。
5.一种面向关系数据库的智能索引调优系统,包括:
解析单元,被配置成对查询日志中的每条查询语句进行解析,以生成查询语句解析树,得到查询语句解析树集合;
生成单元,被配置成基于所述查询语句解析树集合,生成候选索引集合;
确定单元,被配置成确定所述候选索引集合中的每个候选索引的索引优化值;
选择单元,被配置成从所述候选索引集合中选择满足预设条件的至少一个候选索引作为调优索引集合;
存储单元,被配置成将所述调优索引集合存储至目标数据库。
6.一种电子设备,包括:
一个或多个处理器;
存储装置,其上存储有一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-4中任一所述的方法。
7.一种计算机可读介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现如权利要求1-4中任一所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210559811.XA CN115062011A (zh) | 2022-05-23 | 2022-05-23 | 一种面向关系数据库的智能索引调优方法及系统 |
JP2023015860A JP7358685B1 (ja) | 2022-05-23 | 2023-02-06 | リレーショナル・データベース向けのインテリジェント・インデックス・チューニング方法およびシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210559811.XA CN115062011A (zh) | 2022-05-23 | 2022-05-23 | 一种面向关系数据库的智能索引调优方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115062011A true CN115062011A (zh) | 2022-09-16 |
Family
ID=83199151
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210559811.XA Pending CN115062011A (zh) | 2022-05-23 | 2022-05-23 | 一种面向关系数据库的智能索引调优方法及系统 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP7358685B1 (zh) |
CN (1) | CN115062011A (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06110933A (ja) * | 1992-09-28 | 1994-04-22 | Hitachi Ltd | 検索処理手順管理方法およびデータベース処理システム |
JPH06214849A (ja) * | 1993-01-14 | 1994-08-05 | Toshiba Corp | データベースシステム |
JPH08221305A (ja) * | 1995-02-20 | 1996-08-30 | Omron Corp | インデックス付与カラム決定装置およびインデックス付与カラム決定方法 |
JPH10111819A (ja) * | 1996-10-04 | 1998-04-28 | Hitachi Ltd | リレーショナルデータベースのインデックス自動付加システム |
US7376642B2 (en) * | 2004-03-30 | 2008-05-20 | Microsoft Corporation | Integrated full text search system and method |
JP6669571B2 (ja) * | 2016-04-19 | 2020-03-18 | 株式会社シスバンク | リレーショナルデータベースのチューニング装置及び方法 |
-
2022
- 2022-05-23 CN CN202210559811.XA patent/CN115062011A/zh active Pending
-
2023
- 2023-02-06 JP JP2023015860A patent/JP7358685B1/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP7358685B1 (ja) | 2023-10-11 |
JP2023172870A (ja) | 2023-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107491534B (zh) | 信息处理方法和装置 | |
CN109522341B (zh) | 实现基于sql的流式数据处理引擎的方法、装置、设备 | |
CN107291835B (zh) | 一种搜索词的推荐方法和装置 | |
CN115221191A (zh) | 一种基于数据湖的虚拟列构建方法以及数据查询方法 | |
CN118170795A (zh) | 数据查询方法、装置、存储介质及电子设备 | |
CN111008213A (zh) | 用于生成语言转换模型的方法和装置 | |
CN116150194B (zh) | 数据获取方法、装置、电子设备和计算机可读介质 | |
US20200110815A1 (en) | Multi contextual clustering | |
CN111737571A (zh) | 搜索方法、装置和电子设备 | |
CN115062011A (zh) | 一种面向关系数据库的智能索引调优方法及系统 | |
CN113609309B (zh) | 知识图谱构建方法、装置、存储介质及电子设备 | |
CN116010606A (zh) | 文本审核模型的训练方法、装置及文本审核的方法、装置 | |
CN113468529B (zh) | 一种数据搜索方法和装置 | |
CN111737572B (zh) | 搜索语句生成方法、装置和电子设备 | |
CN111368036B (zh) | 用于搜索信息的方法和装置 | |
CN111723106A (zh) | SparQL查询语句的预测方法和装置 | |
CN113779370A (zh) | 一种地址检索方法和装置 | |
CN116737762B (zh) | 结构化查询语句生成方法、装置和计算机可读介质 | |
CN111241431A (zh) | 一种网页分类方法和装置 | |
CN118093097B (zh) | 数据存储集群资源调度方法、装置、电子设备和介质 | |
CN116361112B (zh) | 一种告警收敛方法和装置 | |
CN115543925B (zh) | 文件处理方法、装置、电子设备和计算机可读介质 | |
CN118069122A (zh) | 结构化查询语句复用方法、装置、电子设备和介质 | |
CN117493375A (zh) | 一种结构化查询语句相似度检测方法、装置及设备 | |
CN113724031A (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 |