一种数据库查询优化方法及系统的制作方法

文档序号:9929639阅读:451来源:国知局
一种数据库查询优化方法及系统的制作方法
【技术领域】
[0001 ]本发明涉及数据库领域,尤其涉及一种数据库查询优化方法及系统。
【背景技术】
[0002]数据库系统对用户隐藏数据结构细节,提供一个与数据无关的接口,用户只需对查询行为进行简单描述,无须关注获取这些数据的内部过程。查询优化就是在查询执行引擎生成一个执行策略的过程中,尽量使查询的总资源占用和总时间消耗极小化。数据库管理系统可以内置一个查询优化器,用于控制和加快查询执行和数据传输的过程,当用户查询表达经过查询处理器的语法分析处理后,查询优化器为查询选择一种适当的数据存取策略作为输出。然而,查询优化一直是个复杂的问题,特别是对海量数据的查询。
[0003]数据库系统的一个主要功能是它能够使得用户通过查询语言访问和修改数据。查询是数据库系统中最基本、最常用的一种操作,因此,查询是否具备较高的执行效率和快捷的反应速度,己成为数据库用户和设计者极其关注的问题。为了提高数据库系统的性能,对查询进行优化是必不可少的。

【发明内容】

[0004]本发明的目的在于提供一种数据库查询优化方法及系统,能够取得更好的优化效果,提高查询效率。
[0005]为实现上述目的,本发明提供的数据库查询优化方法,包括以下步骤:
[0006]I)将查询语句字符串用查询内部表示结构表示;
[0007]2)对所述查询内部表示进行特性分析,生成在语义上等价的查询内部表示;
[0008]3)对所述在语义上等价的查询内部表示进行语法分析,生成语义上的数据库内部表不;
[0009]4)将语义上的数据库内部表示进行查询优化处理,生成最终的执行计划;
[0010]5)对最终的执行计划进行解释和执行,生成查询结果或错误信息。
[0011]进一步地,所述步骤I)是将查询语句字符串分成多个词法单元并用查询内部表示结构表示。
[0012]进一步地,所述步骤2)是根据查询重写规则对所述查询内部表示进行特性分析,生成在语义上等价的查询内部表示。
[0013]进一步地,所述查询重写规则包括;
[0014]a)将过程性查询转换成描述性查询;
[0015]b)将效率较低的谓词转换为等价的效率高的谓词;
[0016]c)将查询语句转换成效率高的语句;
[0017]d)将查询转换为单个选择语句。
[0018]进一步地,所述步骤3)进一步包括以下步骤:对所述在语义上等价的查询内部表示进行语法分析及语义检查,如果语法是正确的,将生成一个语法树,然后再对该语法树进行检查;如果所述在语义上等价的查询内部表示涉及到的表、视图以及相关属性是合法的,则生成一个语义上的数据库内部表示。
[0019]进一步地,所述步骤4)进一步包括以下步骤:将查询的语义上的数据库内部表示转化为查询可执行的内部表示形式;对所述查询可执行的内部表示进行逻辑关系的优化,得到查询指令序列;执行操作的优化;执行操作间关系的优化,生成最终的执行计划。
[0020]更进一步地,所述逻辑关系的优化是根据表及其选择条件,选择先对哪个表作连接,通过条件类型及相关属性决定其关系代数运算的操作;所述执行操作的优化是针对操作确定其最佳执行效果;所述操作间关系的优化是针对不同的操作序列,进行等价的重新组合。
[0021]为实现上述目的,本发明提供的数据库查询优化系统,包括,词法分析器、查询优化器、语法分析器、查询执行引擎,以及计划管理模块,其中,
[0022]所述词法分析器,其将查询语句字符串分成多个词法单元,并用查询内部表示结构表示;
[0023]所述查询优化器,对所述查询内部表示进行特性分析,生成一个语义上等价的查询内部表示;将查询的语义上的数据库内部表示转化为查询可执行的内部表示形式;对所述查询的语义上的数据库内部表示分别进行优化,生成最优的执行指令序列;
[0024]所述语法分析器,对输入的查询内部表示进行语法分析,生成语法树和/或语义上的数据库内部表示;
[0025]所述查询执行引擎,从所述查询优化器模块获得最终的执行计划,并对其作出解释和执行,得出最终的正确结果或错误信息;
[0026]所述计划管理模块,存储并管理所述查询优化器发送的最终的执行计划。
[0027]进一步地,所述查询优化器,进一步包括查询重写模块、逻辑关系优化模块、执行操作优化模块,以及操作间关系优化模块,其中,
[0028]所述查询重写模块,对查询内部表示进行特性分析,生成语义上等价的查询内部表不;
[0029]所述逻辑关系优化模块,根据表及其选择条件,选择连接的表,并通过条件类型及相关属性决定其关系代数运算的操作;
[0030]所述执行操作优化模块,其针对某一特定操作,确定其最佳执行效果的算法。
[0031]所述操作间关系优化模块,其针对不同的操作序列,对其进行等价的重新组合。
[0032]更进一步地,所述查询重写模块,其根据查询重写规则对所述查询内部表示进行特性分析,生成在语义上等价的查询内部表示;所述查询重写条件,包括;将过程性查询转换成描述性查询;将效率较低的谓词转换为等价的效率高的谓词;将查询语句转换成效率高的语句;将查询转换为单个选择语句。
[0033]本发明的数据库查询优化方法及系统,将查询重写规则和执行策略相结合,对查询语句解析的不同层次分别进行优化,通过查询重写从语句级别根据数据库的执行特点转换成执行效率较高的语句,通过对解析后的执行策略重新排列、组合,转换成等价的高效的执行计划。这样可以很好地发挥查询重写的作用,一方面可以通过查询重写直接提高查询效率,另一方面可以使得计划优化能够取得更好的效果,从而可以避免单靠计划优化的优化方法所带来的局限性。
[0034]本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。
【附图说明】
[0035]附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中:
[0036]图1为根据本发明的数据库查询优化方法的流程图;
[0037]图2为根据本发明的数据库查询优化系统的框图;
[0038]图3为根据本发明的查询优化器结构示意图。
【具体实施方式】
[0039]以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
[0040]图1为根据本发明的数据库查询优化方法的流程图,下面将参考图1,对本发明的数据库查询优化方法进行详细描述。
[0041]首先,在步骤101,在一个查询语句执行时,首先把包含该查询语句的字符串分成一个一个的词法单元,用查询内部表示结构表示,对查询语句进行词法分析。
[0042]在步骤102,对词法分析后的查询内部表示,进行查询语句的特性分析,将满足条件的查询重写规则实施在该查询上,从而生成一个语义上等价的查询内部表示,对查询语句进行查询重写。
[0043]本发明中,查询重写不考虑查询计划的代价,因此,查询重写后的查询不一定比原查询效率高,查询重写是基于规则的,只有当重写条件满足时才对查询做相应的转换,否则查询重写什么也不做。查询重写规则包括:
[0044]1.将过程性查询转换成描述性的;
[0045]2.将效率较低的谓词转化为等价的效率较高的谓词;
[0046]3.在查询重写阶段将查询语句转换成效率高的语句,消除冗余,常量条件;
[0047]4.将查询转换为单个选择语句。
[0048]查询重写,通过对所给的查询施加一些特定的变换(如:将嵌套子查询合并、等价谓词替换,等),从而产生等价的希望比原来效率更高的查询。在重写阶段,只依赖于查询本身的特点,即如果查询满足了某些特性或条件就会实施相应的重写操作,它不考虑查询的执行代价。因此,不管重写后的查询效率是比原来的高还是比原来底,新产生的查询都会被传到下一阶段处理。
[0049]在步骤103,对查询语句进行语法分析及语义检查,如果查询语句语法是正确的,将生成一个语法树,然后再对该语法树进行检查,如果该语句涉及到的表、视图以及相关属性都是合法的,则生成一个语义上的数据库内部表示,该语义上的数据库内部表示主要用于生成sql语句对应的执行体序列。
[0050]在步骤104,将语义上的数据库内部表示进行查询优化处理。首先将查询的语义上的数据库内部表示转化为查询可执行的内部表示(执行体序列)形式,然后根据join算法对内部表示进行逻辑关系的优化操作,得到一系列查询指令序列;然后执行操作间关系的优化生成最优的执行指令序列,指令执行时在选择优化后的算法执行具体的指令操作。最终的执行计划(最优的执行指令序列)将提交给计划管理模块来存储或直接交给查询执行引擎执行。
[0051 ]在步骤105,对最终的执行计划进行解释和执行,生成查询结果或错误信息。查询执行引擎为每一个关系操作或操作序列实现一系列物理操作从而实现一系列数据库实现,如插入数据,查询等,这些物理操作包括排序、顺序扫描、索引扫描、连接、嵌套循环连接、排序归并连接,物化等。进而产生执行查询的代码,交给数据库处理器执行,最终生查询结果或报告错误信息。即获得最终的执行计划,并对其作出解释和执行,从而得出最终的正确结果或错误信息。查询执行引擎充分考虑数据的存储分布、大小、元组的排序情况和存取路径等,利用它们提高关系操作的运算效率。
[0052]为了选择最高效的查询计划,需要判断:
[0053](I)当前查询语句,有哪几种等价形式,根据当前数据库的实现机制,哪种等价形式有着较高的执行效率。
[0054](2)根据查询语句所操作表的不同,查询条件的不同,选择不同的执行流程、算法,使语句执行操作达到最优。
[0055](3)对最优执行计划中的每个操作选择最优的执行算法。
[0056](4)对解析后的执行体序列重新组合,转换,使得执行序列所费时间最短。
[0057]通过计划优化,在查询语句处理的不同阶段,通过有效的控制,让优化器解析成最优的执行序列,最后交由查询执行引擎执行。
[0058]本发明查询优化的目标是选择最有效的查询执行计划。假定S是适合该查询的所有策略的集合,S
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1