CN115617842A - 一种关系型数据的查询优化方法及装置 - Google Patents
一种关系型数据的查询优化方法及装置 Download PDFInfo
- Publication number
- CN115617842A CN115617842A CN202110797398.6A CN202110797398A CN115617842A CN 115617842 A CN115617842 A CN 115617842A CN 202110797398 A CN202110797398 A CN 202110797398A CN 115617842 A CN115617842 A CN 115617842A
- Authority
- CN
- China
- Prior art keywords
- execution
- dynamic
- data
- execution plan
- syntax tree
- 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/245—Query processing
- G06F16/2453—Query optimisation
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种关系型数据的查询优化方法及装置。该方法包括:确定关系型数据的动态分析特征语法树;基于动态分析特征语法树中的动态性能数据及相应的权重分数,确定执行计划中执行动作对应的最优代价,并得到执行计划的最优代价;其中,执行计划是结构化查询语句在数据库中的执行过程或访问路径,执行计划包含至少一个所述执行动作;基于执行计划的最优代价,判断结构化查询语句的逻辑执行计划是否最优;若否,则根据所述动态分析特征语法树,对所述逻辑执行计划中非最优的执行动作对应的目标结构化查询语句进行优化。采用本发明方法,基于代价差别确定需要优化的结构化查询语句,从而实现针对性的优化,提高查询数据优化的精度和效率。
Description
技术领域
本发明涉及计算机应用技术领域,具体涉及一种关系型数据的查询优化方法和装置。另外,还涉及一种电子设备及处理器可读存储介质。
背景技术
近年来,随着互联网技术的快速发展,基于数据库实现的应用越来越多。在数据库工作过程中,通常需要对数据库执行的SQL(Structured Query Language,结构化查询语言)查询语句进行优化,从而避免性能较差的结构化查询查询语句进入系统,使得数据库的性能和稳定性降低。
结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统中存储的数据。结构化查询语言能够允许用户在高层数据结构上工作。其不要求用户指定数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口。同时,结构化查询语言语句可以嵌套,从而使其具有极大的灵活性和强大的功能。然而,现有技术中针对结构化查询语句的优化处理方式流程较为单一,且缺少针对性,导致查询数据优化处理稳定性和效率较低。因此,如何设计一种稳定、高效的查询数据优化处理方案成为亟待解决的难题。
发明内容
为此,本发明提供一种关系型数据的查询优化方法及装置,以解决现有技术存在的数据查询优化处理方案针对性较差,导致对查询数据的优化效率和准确性降低的问题。
第一方面,本发明提供一种关系型数据的查询优化方法,包括:
确定关系型数据的动态分析特征语法树;
基于所述动态分析特征语法树中的动态性能数据以及相应的权重分数,确定执行计划中执行动作对应的最优代价,并得到所述执行计划的最优代价;其中,所述执行计划是结构化查询语句在数据库中的执行过程或访问路径,所述执行计划包含至少一个所述执行动作;
基于所述执行计划的最优代价,判断结构化查询语句的逻辑执行计划是否最优;若否,则根据所述动态分析特征语法树,对所述逻辑执行计划中非最优的执行动作对应的目标结构化查询语句进行优化。
在一个实施例中,所述确定关系型数据的动态分析特征语法树,具体包括:
获取对目标数据库进行查询的结构化查询语句;
对所述结构化查询语句进行分析,确定初始动态分析特征语法树;其中,所述结构化查询语句为关系型数据;
提取所述目标数据库对应的动态性能数据;所述动态性能数据包含动态统计数据和动态数据词典;其中,所述动态统计数据包含所述目标数据库对应的区分度、平均行长以及数据量;
基于所述动态性能数据和所述初始动态分析特征语法树,构建所述关系型数据的动态分析特征语法树。
在一个实施例中,基于所述动态性能数据和所述初始动态分析特征语法树,构建所述关系型数据的动态分析特征语法树,具体包括:
将所述动态性能数据以及相应的权重分数挂载到所述初始动态分析特征语法树的叶子节点上,作为所述叶子节点的属性,得到关系型数据的动态分析特征语法树;其中,所述权重分数为所述动态性能数据中各个动态数据分别对应的权重分数。
在一个实施例中,所述的关系型数据的查询优化方法,还包括:
获取初始结构化查询语句的逻辑执行计划,并确定所述逻辑执行计划的代价;
判断所述逻辑执行计划的代价是否高于所述执行计划的最优代价,若是,则确定所述逻辑执行计划中代价高于最优代价对应的执行动作,将所述执行动作对应的执行语句作为所述初始结构化查询语句中待优化的结构化查询语句,并基于所述动态分析特征语法树中包含的动态性能数据以及相应的权分数对所述待优化的执行语句进行优化;其中,所述执行语句为待执行的结构化查询语句。
在一个实施例中,所述的关系型数据的查询优化方法,还包括:在对所述待优化的执行语句进行优化之后,基于所述执行动作对应的优化后的执行语句,确定所述执行动作对应的审核规则并存储;其中,所述审核规则用于对后续目标结构化查询语句进行审核以及优化。
在一个实施例中,基于所述动态分析特征语法树中的动态性能数据以及相应的权重分数,确定执行计划中执行动作对应的最优代价,并得到所述执行计划的最优代价,具体包括:
基于所述动态分析特征语法树中叶子节点对应的各个动态数据的权重分,按照所述权重分数对所述执行计划中每个执行动作包括的动态数据进行代价加权,确定所述每个执行动作对应的最优代价,并将所述每个执行动作的最优代价相加作为所述执行计划的最优代价。
在一个实施例中,根据所述动态分析特征语法树,对所述逻辑执行计划中非最优的执行动作对应的目标结构化查询语句进行优化,具体包括:
根据所述动态分析特征语法树中的动态数据,对所述目标结构化查询语句进行优化,并确定优化语句对应的实际代价,直至所述优化语句对应的实际代价与所述执行计划的最优代价之间的差值小于预设的阈值;所述优化语句为优化后的执行语句。
第二方面,本发明还提供一种关系型数据的查询优化装置,包括:
语法树确定单元,用于确定关系型数据的动态分析特征语法树;
执行计划代价估计单元,用于基于所述动态分析特征语法树中的动态性能数据以及相应的权重分数,确定执行计划中执行动作对应的最优代价,并得到所述执行计划的最优代价;其中,所述执行计划是结构化查询语句在数据库中的执行过程或访问路径,所述执行计划包含至少一个所述执行动作;
查询数据优化单元,用于基于所述执行计划的最优代价,判断结构化查询语句的逻辑执行计划是否最优;若否,则根据所述动态分析特征语法树,对所述逻辑执行计划中非最优的执行动作对应的目标结构化查询语句进行优化。
在一个实施例中,所述语法树确定单元,具体用于:
获取对目标数据库进行查询的结构化查询语句;
对所述结构化查询语句进行分析,确定初始动态分析特征语法树;其中,所述结构化查询语句为关系型数据;
提取所述目标数据库对应的动态性能数据;所述动态性能数据包含动态统计数据和动态数据词典;其中,所述动态统计数据包含所述目标数据库对应的区分度、平均行长以及数据量;
基于所述动态性能数据和所述初始动态分析特征语法树,构建所述关系型数据的动态分析特征语法树。
在一个实施例中,基于所述动态性能数据和所述初始动态分析特征语法树,构建所述关系型数据的动态分析特征语法树,具体包括:
将所述动态性能数据以及相应的权重分数挂载到所述初始动态分析特征语法树的叶子节点上,作为所述叶子节点的属性,得到关系型数据的动态分析特征语法树;其中,所述权重分数为所述动态性能数据中各个动态数据分别对应的权重分数。
在一个实施例中,所述的关系型数据的查询优化装置,还包括:
逻辑执行计划代价确定单元,用于获取初始结构化查询语句的逻辑执行计划,并确定所述逻辑执行计划的代价;
所述查询数据优化单元,还用于判断所述逻辑执行计划的代价是否高于所述执行计划的最优代价,若是,则确定所述逻辑执行计划中代价高于最优代价对应的执行动作,将所述执行动作对应的执行语句作为所述初始结构化查询语句中待优化的结构化查询语句,并基于所述动态分析特征语法树中包含的动态性能数据以及相应的权分数对所述待优化的执行语句进行优化;所述执行语句为待执行的结构化查询语句。
在一个实施例中,所述的关系型数据的查询优化装置,还包括:审核规则确定单元,用于在对所述待优化的执行语句进行优化之后,基于所述执行动作对应的优化后的执行语句,确定所述执行动作对应的审核规则并存储;其中,所述审核规则用于对后续目标结构化查询语句进行审核以及优化。
在一个实施例中,所述执行计划代价估计单元,具体用于:
基于所述动态分析特征语法树中叶子节点对应的各个动态数据的权重分,按照所述权重分数对所述执行计划中每个执行动作包括的动态数据进行代价加权,确定所述每个执行动作对应的最优代价,并将所述每个执行动作的最优代价相加作为所述执行计划的最优代价。
在一个实施例中,所述查询数据优化单元,具体用于:
根据所述动态分析特征语法树中的动态数据,对所述目标结构化查询语句进行优化,并确定优化语句对应的实际代价,直至所述优化语句对应的实际代价与所述执行计划的最优代价之间的差值小于预设的阈值;所述优化语句为优化后的执行语句。
第三方面,本发明还提供一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任意一项所述的关系型数据的查询优化方法的步骤。
第四方面,本发明还提供一种处理器可读存储介质,所述处理器可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现如上述任意一项所述的关系型数据的查询优化方法的步骤。
采用本发明所述的关系型数据的查询优化方法,通过结合动态性能数据构建动态分析特征语法树,并根据该动态分析特征语法树确定对应的执行计划以及目标结构化查询语句的逻辑执行计划的代价,基于代价差别确定是否进行结构化查询语句的优化,即基于该最优代价确定逻辑执行计划是否最优,对其中非最优的执行动作对应的结构化查询语句根据动态分析特征语法树进行针对性优化,从而提供了有效依据,提升了应用开发的质量,同时降低了人工审核成本,实现针对性的优化,提高查询数据优化的精度和效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获取其他的附图。
图1为本发明实施例提供的关系型数据的查询优化方法的流程示意图;
图2为本发明实施例提供的动态分析语法树进行特征扩展的流程示意图;
图3为本发明实施例提供的基于动态分析语法树反向推荐规则的流程示意图;
图4为本发明实施例提供的关系型数据的查询优化装置的结构示意图;
图5为本发明实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获取的所有其他实施例,都属于本发明保护的范围。
下面基于本发明所述的关系型数据的查询优化方法,对其实施例进行详细描述。如图1所示,其为本发明实施例提供的关系型数据的查询优化方法的流程示意图,具体实现过程包括以下步骤:
步骤101:确定关系型数据的动态分析特征语法树。
在本发明实施例中,所述确定关系型数据的动态分析特征语法树,实现过程包括:首先获取对目标数据库进行查询的结构化查询语句,即SQL(Structured Query Language)查询语句;进而对所述结构化查询语句进行分析,确定初始动态分析特征语法树;从所述目标数据库提取对应的动态性能数据,并基于所述动态性能数据和所述初始动态分析特征语法树,构建所述关系型数据的动态分析特征语法树。其中,所述动态分析特征语法树为抽象语法树(Abstract Syntax code,AST)。所述动态性能数据具体包含动态统计数据和动态数据词典等动态数据,因此所述的动态性能数据又称动态数据。所述动态统计数据包含所述目标数据库对应的区分度、平均行长以及数据量等统计信息,所述结构化查询语句为关系型数据。
具体的,首先分析对目标数据库进行查询的SQL查询语句,构建初始动态分析特征语法树。然后,从目标数据库中提取区分度、平均行长、数据量等动态统计数据,以及动态数据字典等动态性能数据,并将提取的动态性能数据以及对应的权重分数挂载到初始动态分析特征语法树的叶子节点,获得关系型数据的动态分析特征语法树。
由此可知,所述的基于动态性能数据和所述初始动态分析特征语法树,构建所述关系型数据的动态分析特征语法树,具体实现过程包括:首先将所述动态性能数据以及相应的权重分数挂载到所述初始动态分析特征语法树的叶子节点上,作为所述叶子节点的属性,从而构建得到关系型数据的动态分析特征语法树。其中,所述权重分数为所述动态性能数据中各个动态数据分别对应的权重分数。
步骤102:基于所述动态分析特征语法树中的动态性能数据以及相应的权重分数,确定执行计划中执行动作对应的最优代价,并得到所述执行计划的最优代价。
在本步骤中,首先基于所述动态分析特征语法树中叶子节点对应的各个动态数据的权重分,按照所述权重分数对所述执行计划中每个执行动作包括的动态数据进行代价加权,确定所述每个执行动作对应的最优代价,并将所述每个执行动作的最优代价相加作为所述执行计划的最优代价。其中,所述执行计划是结构化查询语句在数据库中的执行过程或访问路径,所述执行计划包含至少一个所述执行动作。
也就是,基于所述动态分析特征语法树中各个叶子节点对应的各个动态数据的权重分数以及执行计划的动作包括的动态数据,按照权重分数进行代价加权,计算每个执行动作对应的最优代价,并将各个执行动作的最优代价相加作为执行计划的最优代价。
步骤103:基于所述执行计划的最优代价,判断结构化查询语句的逻辑执行计划是否最优;若否,则根据所述动态分析特征语法树,对所述逻辑执行计划中非最优的执行动作对应的目标结构化查询语句进行优化。
具体的,首先根据所述动态分析特征语法树中的动态数据,对所述目标结构化查询语句进行优化,并确定优化语句对应的实际代价,直至所述优化语句对应的实际代价与所述执行计划的最优代价之间的差值小于预设的阈值,其中,所述优化语句即为优化后的执行语句。
进一步的,在具体实施过程中,还可获取初始结构化查询语句的逻辑执行计划,并确定所述逻辑执行计划的代价;通过将所述逻辑执行计划的代价与所述执行计划的最优代价进行比对,判断所述逻辑执行计划的代价是否高于所述执行计划的最优代价,若是,则确定所述逻辑执行计划中代价高于最优代价对应的执行动作,将所述执行动作对应的执行语句作为所述初始结构化查询语句中待优化的结构化查询语句,并基于所述动态分析特征语法树中包含的动态性能数据以及相应的权分数对所述待优化的执行语句进行优化。在对所述待优化的执行语句进行优化之后,基于所述执行动作对应的优化后的执行语句,确定所述执行动作对应的审核规则并存储。所述审核规则用于对后续目标结构化查询语句进行审核以及优化。所述执行语句即为待执行的结构化查询语句。
其中,所述的确定逻辑执行计划的代价,实现过程包括:根据所述逻辑执行计划中执行动作包含的动态数据的权重,按照预设代价估计模型确定所述逻辑执行计划的代价。
具体的,获取所述SQL查询语句的逻辑执行计划,并依据逻辑执行计划中各执行动作包括的动态数据的权重分数,计算所述逻辑执行计划的代价,若所述逻辑执行计划的代价高于所述执行计划的最优代价,确定所述逻辑执行计划中代价高于最优代价对应的执行动作,从而将所述执行动作对应的执行语句作为所述初始结构化查询语句中待优化的结构化查询语句,即待优化语句或者待优化的执行语句。根据语法树中的动态数据对所述待优化的执行语句进行优化并计算优化后的执行语句对应的代价,直至所述优化语句对应的代价与最优代价之间的差值小于预设的阈值。进一步的,为了便于对后续目标结构化查询语句进行审核以及优化,在本发明实施例中,还可基于所述执行动作被优化后的执行语句确定所述执行动作对应的审核规则并存储。
在本发明实施例中,下面将针对关系型数据的动态分析语法树进行系统描述:
本发明实施例中提出的动态分析语法树DAST(Dynamic Analyzed AST)是指特征扩展后的关系型数据的动态分析语法树,其可以基于动态性能数据对关系型数据SQL语法进行动态扩展,生成执行逻辑。具体包含词法分析和语法分析两个部分。涉及的词法为SQL中的关键词。语法或者SQL语法为关系型数据SQL查询语句。动态性能数据或者动态数据为动态统计数据、动态数据字典等,比如包括属性degree,num rows,avarage line size等。所述动态统计数据为结构化查询语句执行时产生的动态统计数据或者动态统计信息。
其中,关系型数据的动态分析特征语法树的实现过程包括:
词法分析可读取SQL语法;然后按照预设的规则合并成一个个的标识tokens。同时移除空白符、注释等;最后,整个SQL语法将被分割进一个tokens列表(或者说一维数组)。
语法分析可将词法分析出来的数组或者列表转换成树形的形式,构建相应的语法树。通过event和当前的state得到下一个state,即event+state=next state,最终达到语法与正则表达式贪婪匹配,因此语法树构建过程可以看作正则匹配过程。
完成语法树的构建后,针对Oracle、MySQL、DB2、SQL Server、GaussDB、OceanBase、PostgreSQL等目标数据库进行特征扩展,除基于用户输入,同时将结构化查询语句执行过程的动态统计数据组件成初始动态分析语法树。
特征扩展的实现是在目标数据库提取SQL中用到对象的除表、列等用户定义的信息外,本发明对动态统计数据、运行监控的数据字典信息进行了有效关联,计算了字段区分度(唯一性)、执行动作、统计行数、等待事件、事务信息等,并将这些信息为不同目标数据库设计模型承载,将所有动态数据挂载至初始动态分析语法树上的叶子节点作为属性,统计每个叶子节点的关联数据,并为每个节点选取的最终路径节点增减权重,最终形成了关系型数据的动态分析特征语法树及最优路径权重。
具体的,关系型数据的动态分析特征语法树(即解析引擎)用于对SQL查询语句进行解析、优化及审核。同时,由于SQL查询语句存在复杂的嵌套,以及各种函数和运算符,造成传统语法树AST结构较为复杂,通常需要复杂的遍历,还需依赖于动态数据字典、统计数据,造成直接应用传统语法树AST成本较高,本发明开放了其API,如图2所示,具体包含:获取SQL依赖对象;获取表的关联列,过滤列,分组列及相关统计数据、动态数据字典信息;获取SQL的结构特征:嵌套层次及依赖的统计数据层次信息。
在本发明实施例中,下面将针对关系型数据的审核规则进行系统描述:
得到的所述审核规则为多源审核规则,即专家审核引擎的规则,其除了固定规则、自定义规则外,还增加了推荐规则。所述推荐规则是基于动态分析语法树DAST进行反向解析,结合已经得到的动态统计数据、动态数据字典进行推演,得到推荐规则,用户可以将该推荐规则固化或临时启动,在此不做具体限定。
所述推荐规则涵盖了GaussDB数据库、MySQL开源数据库、Oracle数据库、SQLServer数据库,同时基于现有固定规则,可进行组合和融合,可融合的规则包含且不限于以下规则:
表1 GaussDB数据源审核
经过专家审核引擎,GaussDB数据源审核方法有至少以上共计5条主要核心审核规则,在此不做具体限定。
表2 MySQL数据源审核
本发明专家审核引擎,GaussDB数据源审核方法至少有以上共计20条主要核心审核规则。
序号 | 库类型 | 审核对象类型 | 规则名 |
1 | OceanBase | sqltext | DML语句缺少where条件 |
2 | OceanBase | sqltext | 表连接时缺少连接条件 |
3 | OceanBase | sqltext | 使用select* |
4 | OceanBase | sqltext | 使用左模糊查询 |
5 | OceanBase | sqltext | 执行计划中存在笛卡尔操作 |
表3 OceanBase数据源审核
本发明专家审核引擎,OceanBase数据源审核方法至少有以上5条主要核心审核规则。
表4 Oracle数据源审核
本发明专家审核引擎,Oracle数据源审核方法至少有以上共计20条主要核心审核规则。
表5 SQL Server数据源审核
下面将基于动态分析语法树DAST的解析结果可反向推荐审核规则的典型使用场景进行说明,但是在本发明实施例包括但不限下述场景,即针对执行计划中出现的全表扫描步骤时,主要从主动选择和被动选择两种情况去解析。
通过动态分析语法树方法结合动态数据字典及动态统计数据,主动推荐最优的非固化的审核规则,在不影响对应应用程序逻辑的条件下,根据用户配置选择自适应调整数据类型。
主动选择,过滤条件列有索引,但优化器判定全表扫描效率更高的情况(全表扫描为多块读、索引一般为单块读且往往需要回表),可主动推荐了全表扫描规则改写,并基于用户配置主动调整执行动作,根据分析结果主动推荐建议类似的实际性能较低,需要调整查询方式的场景。
被动选择即过滤条件没有索引或者过滤条件上的索引失效(INVALID)或者因为在索引列上发生了函数计算、索引列同赋值类型不同而引起的隐式转换等原因导致的无法使用索引。
在具体实施过程中,植入审核规则的主动选择情况:1)可忽略情况规则。当业务表数据量较小时,全表扫描只需一次IO操作即可获取所有行,而采用索引+回表至少需要两次IO操作才能获取所需要的结果,此时效率肯定是全表扫描效率更高,此情况可直接使用全表扫描,避免了设计过多的索引,但需考虑此表未来数据的变化,如业务数据表可能在未来数据会大量增长,就要提前将索引设计进去,避免因数据在某个阶段发生大的变化时而引起的查询性能的急剧下降。如为配置表,其数据基本稳定在一个范围,可将全表扫描动作忽略。2)查询设计合理性规则。当查询条件过滤性交差时,即查询结果占了总数据量较高比重时,优化器也很大概率选择全表扫描。针对这种情况就要考虑查询业务设计合理性规则,是否违背了OLTP业务查询数据最少原则。
除此之外,植入审核规则的被动选择情况:1)条件列无索引规则。针对选择过滤性高且执行频率高的查询列上创建合适的索引,确保SQL查询语句在执行期间能使用上索引而提高执行效率。2)索引失效规则。当索引列上存在函数计算、表达式、隐式转换、左模糊匹配时可能导致索引失效,使查询无法走索引而进行全表扫描。
自动推荐规则,如候选索引生成的审核规则示例:将属性分为四组。J:出现在JOIN条件中的属性;EQ:出现在EQUAL条件下的属性;RANGE:出现在范围条件中的属性;O:出现在GROUP BY、ORDER BY子句中的属性。通过动态解析的数据,列选择度,数据量,行平均长度等,来指导候选规则建议的生成:1、使用J,EQ,RANGE中的列选择度,数据量,行平均长度最优属性构造所有单属性索引。2、当表中的属性来自同一个表时,使用O中的区分度最高的属性生成索引。3、如果表a连接了具有多个属性的表b,则使用所有连接区分度最高的属性构造索引。4、将来自J的属性或规则3生成的索引表示为J,将来自RANGE的属性表示为r,构造索引J+EQ+r、索引EQ+r、索引J+r、索引J+EQ。以上规则可首先使用选择度进行选择,在此不在详细赘述。
如图3所示,其他主动推荐规则应用示例:1、主动选择全表扫描。经过动态统计数据解析,查询条件过滤性低(object_id>100)的时为全表扫描,而过滤性高(object_id<100)的时候为索引范围扫描。2、被动选择全表扫描。1)索引范围扫描(经过动态数据字典分析,test2表object_id为字符类型)。2)发生隐式转换进行全表扫描(经过动态数据字典分析,test2表object_id为字符类型)。3)通过动态统计数据分析,属性包含函数运算、表达式及模糊查询进行了全表扫描,在不修改初始逻辑的前提下,可自适应修改匹配数据类型或调整逻辑。
在具体实施过程中,将动态分析语法树获取的叶子节点区分度、平均行长、数据量等动态统计数据以及动态数据字典等数据库动态数据,作为多源规则审核方法的数据输入,进行动态分析语法树反向建议规则输出,实现了对低效SQL问题和风险进行审核,以下为主动推荐规则的具体流程:1、通过动态分析语法树解析方法获取到SQL查询语句操作的对象;2、实时捕获涉及对象的统计数据、动态数据字典;3、获取SQL查询语句的执行计划,判断执行计划匹配审核;4、在性能低效的SQL执行结果下,进入规则审核匹配,同时推荐最优审核规则建议;5、如性能判断结果为自动推荐规则,则可以选择固化此规则,或临时启用。
本发明融合各主流数据库特征,对于Oracle、MySQL、DB2、SQL Server、GaussDB、OceanBase、PostgreSQL、OpenGauss等数据库SQL语言高效语义解析、生成关系型数据的动态分析特征语法树DAST并与动态统计分析数据融合的审核规则方法。除此之外,依靠SQL程序痛点问题,形成一套审核规则的专家审核引擎,除通过管理SQL、表、索引、序列等静态数据外,还可对动态数据字典、动态统计数据等动态性能数据,与SQL解析动态分析特征语法树进行融合计算,得到最准确审核结果和最优SQL程序优化建议。另外,还可将查询计划与动态分析特征语法树融合,形成新的结果集,同时可基于动态分析特征语法树反向推荐规则,协助完善审核优化体系,形成最佳的实践方案。此结果集可以用于各种SQL质量分析的场景,比如专家规则式的SQL分析、语义启发式的SQL分析、机器学习式的SQL分析等。能够快速进行SQL上线前分析、在线分析和用户自定义分析,将SQL代码开发的问题风险降到最低,同时审核过程无人工干预,减轻了海量SQL的审核工作量,同时释放人力成本。
采用本发明实施例所述的关系型数据的查询优化方法,通过结合动态性能数据构建动态分析特征语法树,并根据该动态分析特征语法树确定对应的执行计划以及目标结构化查询语句的逻辑执行计划的代价,基于代价差别确定是否进行结构化查询语句的优化,即基于该最优代价确定逻辑执行计划是否最优,对其中非最优的执行动作对应的结构化查询语句根据动态分析特征语法树进行针对性优化,从而提供了有效依据,提升了应用开发的质量,同时降低了人工审核成本,实现针对性的优化,提高查询数据优化的精度和效率。
与上述提供的一种位于基站侧的关系型数据的查询优化方法相对应,本发明还提供一种位于基站侧的关系型数据的查询优化装置。由于该装置的实施例相似于上述方法实施例,所以描述得比较简单,相关之处请参见上述方法实施例部分的说明即可,下面描述的关系型数据的查询优化装置的实施例仅是示意性的。请参考图4所示,其为本发明实施例提供的一种关系型数据的查询优化装置的结构示意图。
本发明所述的关系型数据的查询优化装置具体包括如下部分:
语法树确定单元401,用于确定关系型数据的动态分析特征语法树;
执行计划代价估计单元402,用于基于所述动态分析特征语法树中的动态性能数据以及相应的权重分数,确定执行计划中执行动作对应的最优代价,并得到所述执行计划的最优代价;其中,所述执行计划是结构化查询语句在数据库中的执行过程或访问路径,所述执行计划包含至少一个所述执行动作;
查询数据优化单元403,用于基于所述执行计划的最优代价,判断结构化查询语句的逻辑执行计划是否最优;若否,则根据所述动态分析特征语法树,对所述逻辑执行计划中非最优的执行动作对应的目标结构化查询语句进行优化。
采用本发明实施例所述的关系型数据的查询优化装置,通过结合动态性能数据构建动态分析特征语法树,并根据该动态分析特征语法树确定对应的执行计划以及目标结构化查询语句的逻辑执行计划的代价,基于代价差别确定是否进行结构化查询语句的优化,即基于该最优代价确定逻辑执行计划是否最优,对其中非最优的执行动作对应的结构化查询语句根据动态分析特征语法树进行针对性优化,从而提供了有效依据,提升了应用开发的质量,同时降低了人工审核成本,实现针对性的优化,提高查询数据优化的精度和效率。
与上述提供的关系型数据的查询优化方法相对应,本发明还提供一种电子设备。由于该电子设备的实施例相似于上述方法实施例,所以描述得比较简单,相关之处请参见上述方法实施例部分的说明即可,下面描述的电子设备仅是示意性的。如图5所示,其为本发明实施例公开的一种电子设备的实体结构示意图。该电子设备可以包括:处理器(processor)501、存储器(memory)502和通信总线503,其中,处理器501,存储器502通过通信总线503完成相互间的通信,通过通信接口504与外部进行通信。处理器501可以调用存储器502中的逻辑指令,以执行关系型数据的查询优化方法。该方法包括:确定关系型数据的动态分析特征语法树;基于所述动态分析特征语法树中的动态性能数据以及相应的权重分数,确定执行计划中执行动作对应的最优代价,并得到所述执行计划的最优代价;其中,所述执行计划是结构化查询语句在数据库中的执行过程或访问路径,所述执行计划包含至少一个所述执行动作;基于所述执行计划的最优代价,判断结构化查询语句的逻辑执行计划是否最优;若否,则根据所述动态分析特征语法树,对所述逻辑执行计划中非最优的执行动作对应的目标结构化查询语句进行优化。
此外,上述的存储器502中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:存储芯片、U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在处理器可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的关系型数据的查询优化方法。该方法包括:确定关系型数据的动态分析特征语法树;基于所述动态分析特征语法树中的动态性能数据以及相应的权重分数,确定执行计划中执行动作对应的最优代价,并得到所述执行计划的最优代价;其中,所述执行计划是结构化查询语句在数据库中的执行过程或访问路径,所述执行计划包含至少一个所述执行动作;基于所述执行计划的最优代价,判断结构化查询语句的逻辑执行计划是否最优;若否,则根据所述动态分析特征语法树,对所述逻辑执行计划中非最优的执行动作对应的目标结构化查询语句进行优化。
又一方面,本发明实施例还提供一种处理器可读存储介质,所述处理器可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的关系型数据的查询优化方法。该方法包括:确定关系型数据的动态分析特征语法树;基于所述动态分析特征语法树中的动态性能数据以及相应的权重分数,确定执行计划中执行动作对应的最优代价,并得到所述执行计划的最优代价;其中,所述执行计划是结构化查询语句在数据库中的执行过程或访问路径,所述执行计划包含至少一个所述执行动作;基于所述执行计划的最优代价,判断结构化查询语句的逻辑执行计划是否最优;若否,则根据所述动态分析特征语法树,对所述逻辑执行计划中非最优的执行动作对应的目标结构化查询语句进行优化。
所述处理器可读存储介质可以是处理器能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NANDFLASH)、固态硬盘(SSD))等。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种关系型数据的查询优化方法,其特征在于,包括:
确定关系型数据的动态分析特征语法树;
基于所述动态分析特征语法树中的动态性能数据以及相应的权重分数,确定执行计划中执行动作对应的最优代价,并得到所述执行计划的最优代价;其中,所述执行计划是结构化查询语句在数据库中的执行过程或访问路径,所述执行计划包含至少一个所述执行动作;
基于所述执行计划的最优代价,判断结构化查询语句的逻辑执行计划是否最优;若否,则根据所述动态分析特征语法树,对所述逻辑执行计划中非最优的执行动作对应的目标结构化查询语句进行优化。
2.根据权利要求1所述的关系型数据的查询优化方法,其特征在于,所述确定关系型数据的动态分析特征语法树,具体包括:
获取对目标数据库进行查询的结构化查询语句;
对所述结构化查询语句进行分析,确定初始动态分析特征语法树;其中,所述结构化查询语句为关系型数据;
提取所述目标数据库对应的动态性能数据;所述动态性能数据包含动态统计数据和动态数据词典;其中,所述动态统计数据包含所述目标数据库对应的区分度、平均行长以及数据量;
基于所述动态性能数据和所述初始动态分析特征语法树,构建所述关系型数据的动态分析特征语法树。
3.根据权利要求2所述的关系型数据的查询优化方法,其特征在于,基于所述动态性能数据和所述初始动态分析特征语法树,构建所述关系型数据的动态分析特征语法树,具体包括:
将所述动态性能数据以及相应的权重分数挂载到所述初始动态分析特征语法树的叶子节点上,作为所述叶子节点的属性,得到关系型数据的动态分析特征语法树;其中,所述权重分数为所述动态性能数据中各个动态数据分别对应的权重分数。
4.根据权利要求1所述的关系型数据的查询优化方法,其特征在于,还包括:
获取初始结构化查询语句的逻辑执行计划,并确定所述逻辑执行计划的代价;
判断所述逻辑执行计划的代价是否高于所述执行计划的最优代价,若是,则确定所述逻辑执行计划中代价高于最优代价对应的执行动作,将所述执行动作对应的执行语句作为所述初始结构化查询语句中待优化的结构化查询语句,并基于所述动态分析特征语法树中包含的动态性能数据以及相应的权分数对所述待优化的执行语句进行优化;其中,所述执行语句为待执行的结构化查询语句。
5.根据权利要求4所述的关系型数据的查询优化方法,其特征在于,还包括:在对所述待优化的执行语句进行优化之后,基于所述执行动作对应的优化后的执行语句,确定所述执行动作对应的审核规则并存储;其中,所述审核规则用于对后续目标结构化查询语句进行审核以及优化。
6.根据权利要求1所述的关系型数据的查询优化方法,其特征在于,基于所述动态分析特征语法树中的动态性能数据以及相应的权重分数,确定执行计划中执行动作对应的最优代价,并得到所述执行计划的最优代价,具体包括:
基于所述动态分析特征语法树中叶子节点对应的各个动态数据的权重分,按照所述权重分数对所述执行计划中每个执行动作包括的动态数据进行代价加权,确定所述每个执行动作对应的最优代价,并将所述每个执行动作的最优代价相加作为所述执行计划的最优代价。
7.根据权利要求1所述的关系型数据的查询优化方法,其特征在于,根据所述动态分析特征语法树,对所述逻辑执行计划中非最优的执行动作对应的目标结构化查询语句进行优化,具体包括:
根据所述动态分析特征语法树中的动态数据,对所述目标结构化查询语句进行优化,并确定优化语句对应的实际代价,直至所述优化语句对应的实际代价与所述执行计划的最优代价之间的差值小于预设的阈值;所述优化语句为优化后的执行语句。
8.一种关系型数据的查询优化装置,其特征在于,包括:
语法树确定单元,用于确定关系型数据的动态分析特征语法树;
执行计划代价估计单元,用于基于所述动态分析特征语法树中的动态性能数据以及相应的权重分数,确定执行计划中执行动作对应的最优代价,并得到所述执行计划的最优代价;其中,所述执行计划是结构化查询语句在数据库中的执行过程或访问路径,所述执行计划包含至少一个所述执行动作;
查询数据优化单元,用于基于所述执行计划的最优代价,判断结构化查询语句的逻辑执行计划是否最优;若否,则根据所述动态分析特征语法树,对所述逻辑执行计划中非最优的执行动作对应的目标结构化查询语句进行优化。
9.一种电子设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-7任意一项所述的关系型数据的查询优化方法的步骤。
10.一种处理器可读存储介质,所述处理器可读存储介质上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-7任意一项所述的关系型数据的查询优化方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110797398.6A CN115617842A (zh) | 2021-07-14 | 2021-07-14 | 一种关系型数据的查询优化方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110797398.6A CN115617842A (zh) | 2021-07-14 | 2021-07-14 | 一种关系型数据的查询优化方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115617842A true CN115617842A (zh) | 2023-01-17 |
Family
ID=84855375
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110797398.6A Pending CN115617842A (zh) | 2021-07-14 | 2021-07-14 | 一种关系型数据的查询优化方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115617842A (zh) |
-
2021
- 2021-07-14 CN CN202110797398.6A patent/CN115617842A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111522816B (zh) | 基于数据库引擎的数据处理方法、装置、终端及介质 | |
US7272589B1 (en) | Database index validation mechanism | |
US8112421B2 (en) | Query selection for effectively learning ranking functions | |
CN112559554B (zh) | 一种查询语句优化方法及装置 | |
US8694561B2 (en) | System and method of optimizing performance of schema matching | |
US20150066987A1 (en) | Method and system for accessing a set of data tables in a source database | |
US7606827B2 (en) | Query optimization using materialized views in database management systems | |
CN112988782B (zh) | Hive支持交互式查询的方法、装置及存储介质 | |
CN113110866A (zh) | 一种数据库变更脚本的评估方法及装置 | |
CN110597844B (zh) | 异构数据库数据统一访问方法及相关设备 | |
CN110909126A (zh) | 一种信息查询方法及装置 | |
CN112162983A (zh) | 数据库索引建议处理方法、装置、介质和电子设备 | |
CN115617830A (zh) | 一种基于机器学习的数据查询优化处理方法及装置 | |
CN110688593A (zh) | 一种社交媒体账号识别方法及系统 | |
CN110704472A (zh) | 数据查询统计方法及装置 | |
CN111125158B (zh) | 数据表处理方法、装置、介质及电子设备 | |
CN113407807A (zh) | 搜索引擎的查询优化方法、装置、电子设备 | |
CN115617842A (zh) | 一种关系型数据的查询优化方法及装置 | |
CN114372083A (zh) | 元数据分析方法及装置 | |
CN113779200A (zh) | 目标行业词库的生成方法、处理器及装置 | |
CN113868138A (zh) | 测试数据的获取方法、系统、设备及存储介质 | |
CN114943004B (zh) | 属性图查询方法、属性图查询装置以及存储介质 | |
CN110334098A (zh) | 一种基于脚本的数据库合并方法及系统 | |
CN108664481B (zh) | 一种数据检索方法及服务器 | |
CN114238318A (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 |