CN102436494B - 基于实践检验的执行计划优化的装置及方法 - Google Patents
基于实践检验的执行计划优化的装置及方法 Download PDFInfo
- Publication number
- CN102436494B CN102436494B CN 201110359329 CN201110359329A CN102436494B CN 102436494 B CN102436494 B CN 102436494B CN 201110359329 CN201110359329 CN 201110359329 CN 201110359329 A CN201110359329 A CN 201110359329A CN 102436494 B CN102436494 B CN 102436494B
- Authority
- CN
- China
- Prior art keywords
- executive plan
- optimization
- executive
- cost
- practice test
- 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.)
- Active
Links
Images
Abstract
本发明公开了一种基于实践检验的执行计划优化的装置及方法,该装置包括相互连接的数据库装置和基于实践检验的优化装置,其中,数据库装置,用于实现关系型数据库的数据存储、结构化查询语言(SQL)语句的优化,以及对执行计划的执行;基于实践检验的优化装置,用于接收数据库装置输出的传统的基于成本的优化执行计划,并返回经过实践检验的执行计划给数据库装置。本发明作为基于成本的优化方法的一种改进措施,可以在不过多增加系统开销的情况下,有效降低复杂多变的数据环境中CBO的误判几率,使得所生成的执行计划确实为现实中最优的执行计划,从而增强系统的稳定性。
Description
技术领域
本发明涉及关系型数据库的数据处理技术领域,具体涉及一种基于实践检验的执行计划优化的装置及方法。
背景技术
关系型数据库在执行结构化查询语言(Structured Query Language,SQL)语句时,可通过多种访问路径来获取数据结果,例如可以通过索引扫描来获取,也可以通过全表扫描来获取,每一种路径被称为该SQL语句的一个执行计划。不同的执行计划消耗不同的系统资源,如消耗不同的磁盘I/0、内存和CPU等。关系型数据库在执行SQL语句之前,会生成该SQL语句的多个执行计划,并选择其中对系统资源消耗最小的执行计划,称为“最优执行计划”。其中,生成执行计划并选择最优执行计划的模块称为“优化器”。如图1所示。
传统的优化器有以下两种:基于规则的优化器和基于成本的优化器。其中,基于规则的优化器(Rule Based Optimizer,RBO)即预先对不同的访问路径(如索引扫描、全表扫描等)设定优先级,认为优先级别越低的访问路径的执行代价越大。因此RBO会选择优先级别最高的访问路径作为最优执行计划。比如当一个SQL语句的查询条件中包含的数据列具有索引,RBO会始终认为使用索引扫描数据优于全表扫描,如图2所示。
这种RBO执行计划的选择策略由于不考虑数据的分布、数据量大小等数据特性,也不考虑I/O、CPU及网络消耗等系统环境,往往会选择次优的执行计划,导致系统性能不高。比如当全表只有少量数据,通过扫描全表会比通过扫描索引访问表数据消耗更少的I/O,执行时间更短,但RBO仍会选择扫描索引访问表作为最优的执行计划。
而第二种优化器为基于成本的优化器(Cost Based Optimizer,CBO),会根据SQL语句所访问的对象属性、索引特性、数据分布特性等多种数据库统计信息,并根据这些影响因素的权重来估算这些执行计划可能消耗的I/O、内存及CPU等资源成本,最终确定一个估算执行成本最小的执行计划。如图3所示。由于CBO综合考虑了影响SQL语句执行的多种因素,因此比基于规则的优化方法更容易产生更优的执行计划。
然而,CBO也存在一些不足。由于CBO预先设定的各种影响因素在成本估算中的权重值并不能真实反应实际中各类资源的消耗比例,因此CBO估算的执行成本只是假想的成本,同实际执行所消耗的成本很可能不一致。而且在一些高访问负荷、数据环境异常复杂的业务系统中,数据统计信息会产生急剧变化、数据环境的变化(如添加或删除索引等)可能导致CBO收集的统计信息不准确,从而使其产生误判,偏向于选择实际消耗资源较多的执行计划,即CBO认为的“最优”的执行计划并非现实中“最优”的执行计划。执行计划的选择失误往往会导致数据库资源使用紧张,业务系统的性能突然下降,对整个系统的稳定性造成严重的影响。
发明内容
(一)要解决的技术问题
为解决上述问题,本发明的主要目的在于提供一种基于实践检验的执行计划优化的装置及方法,以降低复杂多变的数据环境中CBO的误判几率,使得所生成的执行计划确实为现实中最优的执行计划,从而增强系统的稳定性。
(二)技术方案
为达到上述目的,本发明提供了一种基于实践检验的执行计划优化的装置,该装置包括相互连接的数据库装置1和基于实践检验的优化装置2,其中:数据库装置1,用于实现关系型数据库的数据存储、结构化查询语言SQL语句的优化,以及对执行计划的执行;基于实践检验的优化装置2,用于接收数据库装置1输出的传统的基于成本的优化执行计划,并返回经过实践检验的执行计划给数据库装置1。
上述方案中,所述数据库装置1向基于实践检验的优化装置2输出传统的基于成本的优化执行计划,并执行基于实践检验的优化装置2返回的经过实践检验的执行计划,包括SQL执行装置101、基于成本的执行计划优化装置CBO 102和数据库103,其中:SQL执行装置101,用于对用户提交的SQL语句进行语法解析,将解析后的查询块提交给CBO 102,并执行基于实践检验的优化装置2返回的经过实践检验的执行计划;CBO102,用于对解析后的查询块进行重新排序或改变其关联方式以产生更优的执行计划,通过从数据库103中获取查询块所访问对象的统计信息来计算查询结果的行数、比率,预估不同访问路径所消耗的CPU、I/O、内存资源,进而产生多种执行计划,并选取执行成本最小的执行计划作为传统的基于成本的优化执行计划,返回给基于实践检验的优化装置2;数据库103,用于实现关系型数据库的数据存储和访问控制,并在SQL语句优化过程中提供用于估算执行计划成本的各类统计信息。
上述方案中,所述基于实践检验的优化装置2包括执行计划优化装置201、执行计划基准优化装置202、执行计划管理装置203和数据存储装置204,其中:执行计划优化装置201,用于二次优化CBO 102生成的执行计划,以提供给SQL执行装置101执行;执行计划基准优化装置202,用于定时更新执行计划基准表中的数据,使其中的执行计划基准随系统环境的变化而变化,保证执行计划基准的确为现实中最优的执行计划;执行计划管理装置203,用于对数据存储装置204中的记录进行查询、添加、删除或更新;数据存储装置204,用于执行计划相关数据的存储,包括执行计划历史表2041和执行计划基准表2042。
为达到上述目的,本发明还提供了一种基于实践检验的执行计划优化的方法,该方法包括:数据库装置向基于实践检验的优化装置输出传统的基于成本的优化执行计划;基于实践检验的优化装置检索是否存在与该基于成本的优化执行计划相关的历史执行计划或基准执行计划BMSP,对基于成本的优化执行计划LCSP和多个基准执行计划BMSP进行有效性验证、执行计划匹配以及执行成本比较,确定最终使用的经过实践检验的执行计划,返回给数据库装置;以及数据库装置执行该经过实践检验的执行计划。
(三)有益效果
从上述技术方案可以看出,本发明具有以下有益效果:
1、本发明提供的基于实践检验的执行计划优化的装置及方法,通过将CBO所选择的执行计划的实际执行成本反馈给CBO,使其能够结合实际执行的统计信息更准确的评估和选择最优执行计划。该方法作为基于成本的优化方法的一种改进措施,可以在不过多增加系统开销的情况下,有效降低复杂多变的数据环境中CBO的误判几率,使得所生成的执行计划确实为现实中最优的执行计划,从而增强系统的稳定性。
2、本发明提供的基于实践检验的执行计划优化的装置及方法,在基于成本的执行计划器的基础上,将实际检验的结果纳入执行计划选择的考虑范围,相当于充分全面的考虑了各种外部因素对于执行计划成本的影响,可以有效降低基于成本的优化方法单纯依赖于几个有限的考虑因素进行预估和决策所造成的执行计划选择失误的几率。考虑因素的极大丰富却不过多增加优化器的计算开销,更能保证系统性能的稳定性。
3、本发明提供的基于实践检验的执行计划优化的装置及方法,相当于通过大量的实际数据给优化器提供了一个训练集,使优化器有一个学习的过程,变得更加智能,使得它所选择的执行计划最大化的接近现实中最优的执行计划。
4、本发明提供的基于实践检验的执行计划优化的装置及方法,对于变化了的执行计划会进行评估,并且对比评估值同执行计划基准的实际执行成本,只有在验证了新的执行计划优于执行计划基准时,新执行计划才会被使用。这样可以有效避免数据环境剧变(如添加或删除索引、添加或删除物化视图、数据库升级等)造成的执行计划巨变从而导致系统性能不稳定的情况。
附图说明
图1是现有技术中SQL引擎和SQL优化器的示意图;
图2是现有技术中基于规则的优化器的示意图;
图3是现有技术中基于成本的优化器的示意图;
图4是本发明基于实践检验的执行计划优化的示意图;
图5是依照本发明实施例的基于实践检验的执行计划优化的装置的结构示意图;
图6是依照本发明实施例的基于实践检验的执行计划优化的方法流程图;
图7是依照本发明实施例的基于实践检验的执行计划优化方法在执行SQL语句时的工作流程;
图8是依照本发明实施例的基于实践检验的执行计划优化方法在执行计划基准优化时的工作流程;
图9是本发明基于实践检验的执行计划优化方法的一个具体应用场景。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
本发明的技术思路是在基于成本的执行计划优化的基础上,引入执行计划实际执行时消耗资源的统计信息,将实际检验的结果纳入执行计划评估的考虑范围。当执行计划发生变化时,系统仍会优先选择经过实践检验的最小实际成本的历史执行计划,但系统会对传统的成本优化生成的新执行计划进行定期评估,当新计划的评估值小于旧的执行计划的实际消耗成本,则会使用新计划。这种基于实践检验的执行计划优化方法使得所选择的执行计划可以最大化的接近现实中最优的执行计划,并在多变的数据环境中保证了执行计划的稳定性。如图4所示。
本发明为所有执行次数多于一次的SQL语句维护一个执行计划历史列表,用于存放SQL语句的多版本的执行计划。为所有执行次数多于两次的SQL语句维护一个执行计划基准列表,用于存放SQL语句性能较优的执行计划,它是历史执行计划的一个子集。在这两个表中包含了用于重新生成同样的执行计划的相关信息。当优化器接收到一个SQL优化请求时,会首先以基于成本的优化方法生成最小成本(预估值)的执行计划,再将其同基于执行计划基准表生成的执行计划进行匹配,如果匹配成功,则说明基于最小成本的执行计划选择无误,则使用最小成本的执行计划。反之则认为不能确认哪个执行计划更优,所以倾向于选择执行计划基准表中经过实践检验的实际消耗成本最小的执行计划。
然而,执行计划基准表中最小实际成本的执行计划并不一定一直是最优的执行计划。随着数据分布以及环境的变化,可能新版本的执行计划更优于基于基准的执行计划。因此本发明会定时调度执行计划基准优化任务,对执行计划历史列表中的每一个执行计划进行评估,比较历史执行计划的评估值同基于基准执行计划的实际成本,如果前者更优,则将该条历史执行计划的相关信息添加到执行计划基准表中。之所以将执行计划基准的优化作为一个单独的任务定时调度,而非在执行SQL语句产生新执行计划时,实时评估该执行计划的估算成本同执行计划基准的实际执行成本的差异从而决定是否采用新执行计划,是因为实时评估及管理执行计划基准本身会消耗一定的系统资源,导致SQL语句执行缓慢,而定时调度则可以避免过多增加SQL语句的执行成本。
图5是依照本发明实施例的基于实践检验的执行计划优化的装置的结构示意图,该装置包括数据库装置1和基于实践检验的优化装置2。数据库装置1向基于实践检验的优化装置2输出传统的基于成本的优化执行计划,基于实践检验的优化装置2向数据库装置1返回经过实践检验的执行计划。
数据库装置1,用于实现关系型数据库的数据存储、SQL语句的优化以及对执行计划的执行,包括:SQL执行装置101、基于成本的执行计划优化装置(CBO)102和数据库103。其中,SQL执行装置101即SQL引擎,用于对用户提交的SQL语句进行语法解析,将解析后的查询块提交给CBO 102,并执行基于实践检验的优化装置2返回的经过实践检验的执行计划。CBO 102对解析后的查询块进行重新排序或改变其关联方式以产生更优的执行计划,并通过从数据库103中获取查询块所访问对象的统计信息,来计算查询结果的行数、比率,预估不同访问路径(索引、全表扫描等)所消耗的CPU、I/O、内存等系统资源,进而产生多种执行计划,并选取执行成本最小的执行计划作为传统的基于成本的优化执行计划,返回给基于实践检验的优化装置2。数据库103用于实现关系型数据库的数据存储和访问控制,并在SQL语句优化过程中提供用于估算执行计划成本的各类统计信息。
基于实践检验的优化装置2,用于接收CBO 102输出的传统的基于成本的优化执行计划,并返回经过实践检验的执行计划给SQL执行装置101。基于实践检验的优化装置2包括:执行计划优化装置201、执行计划基准优化装置202、执行计划管理装置203和数据存储装置204。执行计划管理装置203接收数据库装置1的CBO 102输出的传统的基于成本的优化执行计划(LCSP),从数据存储装置204中检索是否存在该语句的历史执行计划或基准执行计划(BMSP),并将该传统的基于成本的优化执行计划(LCSP)与数据存储装置204中存储的多个基准执行计划(BMSP)输出至执行计划优化装置201;执行计划优化装置201通过对LCSP和BMSP进行有效性验证、执行计划匹配以及执行成本比较,确定最终使用的执行计划,即经过实践检验的执行计划,并提交给数据库装置1中的SQL执行装置101,同时获取SQL语句的实际执行成本如CPU、执行时间等,并反馈至执行计划管理装置203,执行计划管理装置203将该SQL语句的实际执行成本记录或更新至执行计划基准表。执行计划基准优化装置202是个较为独立的装置,负责定期调度优化程序以进行历史执行计划和基准执行计划的比较,若产生了优于原基准的新执行计划,则反馈至执行计划管理装置203,执行计划管理装置203将该优于原基准的新执行计划写入数据存储装置204的执行计划历史表中。
执行计划优化装置201负责二次优化CBO生成的执行计划以提供给SQL执行装置101执行,具有实时特性,它包含执行计划比较装置2011、执行计划匹配装置2012和执行计划验证装置2013。执行计划验证装置2013接收到执行计划管理装置203发送的基于成本的优化执行计划(LCSP)和多个基准执行计划(BMSP)之后,验证其对当前系统环境的有效性,并将有效的基准执行计划输出至执行计划匹配装置2012;执行计划匹配装置2012将LCSP同多个BMSP进行一一匹配,若匹配成功,则直接将该LCSP输出至SQL执行装置101,若无法匹配,则将BMSP输出至执行计划比较装置2011;执行计划比较装置2011根据实际执行成本对多个BMSP进行比较,选择实际上成本最小的执行计划输出至SQL执行装置101。
由于系统环境可能发生变化(比如索引被删除),则已存在的基于执行计划基准的执行计划(如索引扫描)可能对当前系统无效,所以需要执行计划验证装置2013将有效的基于基准的执行计划提供给执行计划匹配装置2012,即执行计划验证装置2013负责验证基于执行计划基准所生成的执行计划的有效性。执行计划匹配装置2012负责将基于执行计划基准的执行计划同最小估算成本的执行计划进行匹配。执行计划比较装置2011负责比较两个执行计划的执行成本,返回性能更优的执行计划。比如对比基于基准执行计划的实际执行成本,并将其中实际成本最小的执行计划返回给SQL执行装置101执行。
执行计划基准优化装置202,负责定时更新执行计划基准表中的数据,使其中的执行计划基准随系统环境的变化而变化,保证执行计划基准的确为现实中最优的执行计划。它包括任务调度装置2022和执行计划评估装置2021,具有非实时性。任务调度装置2022中包含定时器,当用户配置完优化任务的执行起止时间及执行频度之后,任务调度装置2022会定期启动执行计划评估装置2021;执行计划评估装置2021启动后,从执行计划管理装置203中获取执行计划历史表和执行计划基准表,预估执行计划历史表中的执行计划的执行成本,并使之与最小的基准执行计划进行比较,若小于则将执行计划历史表中的执行计划输出至执行计划管理装置203,执行计划管理装置203将该执行计划写入执行计划基准表。
执行计划评估装置2021,负责获取执行计划历史表2041的记录并评估其可能的执行成本,并将评估成本小于执行计划基准的实际成本的执行计划提供给执行计划管理装置203以更新执行计划基准表。
任务调度装置2022,负责定时调度执行计划基准优化任务。
执行计划管理装置203,负责执行计划历史表2041和执行计划基准表2042的管理,如对应记录的查询、添加、删除、更新等。
数据存储装置204,负责执行计划相关数据的存储,它包括执行计划历史表2041和执行计划基准表2042。
执行计划历史表2041,负责存储执行次数多于一次的执行计划的相关信息,以下为优选的数据结构表:
执行计划基准表2042,负责存储实际执行成本较少的SQL语句执行计划的相关信息,以下为优选的数据结构表:
基于上述图5所示的依照本发明实施例的基于实践检验的执行计划优化的装置,图6示出了依照本发明实施例的基于实践检验的执行计划优化的方法流程图,该方法包括以下步骤:
步骤1:数据库装置向基于实践检验的优化装置输出传统的基于成本的优化执行计划;
步骤2:基于实践检验的优化装置检索是否存在与该基于成本的优化执行计划相关的历史执行计划或基准执行计划BMSP,对基于成本的优化执行计划LCSP和多个基准执行计划BMSP进行有效性验证、执行计划匹配以及执行成本比较,确定最终使用的经过实践检验的执行计划,返回给数据库装置;以及
步骤3:数据库装置执行该经过实践检验的执行计划。
其中,步骤1中所述数据库装置向基于实践检验的优化装置输出传统的基于成本的优化执行计划之前,还包括:数据库装置中的SQL执行装置接收用户提交的SQL语句,数据库装置中的CBO根据该SQL语句生成传统的基于成本的优化执行计划。
步骤2中所述基于实践检验的优化装置检索是否存在与该基于成本的优化执行计划相关的历史执行计划或基准执行计划BMSP,对基于成本的优化执行计划LCSP和多个基准执行计划BMSP进行有效性验证、执行计划匹配以及执行成本比较,确定最终使用的经过实践检验的执行计划,包括:基于实践检验的优化装置中的执行计划管理装置检索数据存储装置中否存在该SQL语句的基准执行计划,若存在,则验证该基准执行计划的有效性,然后将基于成本的优化执行计划与有效性的基准执行计划进行匹配,若匹配成功,则将该基于成本的优化执行计划确定为经过实践检验的执行计划;若匹配失败,则比较所有基准执行计划的实际执行成本,选择实际成本最小的基准执行计划为经过实践检验的执行计划。
步骤2中所述确定最终使用的经过实践检验的执行计划之后,还包括:基于实践检验的优化装置中的执行计划管理装置将确定最终使用的经过实践检验的执行计划更新到执行计划基准表中。
图7示出了依照本发明实施例的基于实践检验的执行计划优化方法在执行SQL语句时的工作流程,其具体步骤如下:
步骤101:SQL执行装置101接受用户提交的SQL语句。
步骤102:CBO102生成最小成本执行计划(Lowest Cost SQL PLAN,简称LCSP)。
步骤103:执行计划管理装置203检索是否存在该语句的执行计划基准。若存在,则进入步骤104;否则进入步骤111。
步骤104:执行计划验证装置2013验证基于执行计划基准的执行计划(Benchmark Based SQL PLAN,简称BMSP)的有效性。
步骤105:执行计划匹配装置2012将LCSP同所有有效的BMSP进行匹配。若匹配失败,则进入步骤106;否则进入步骤109。
步骤106:执行计划比较装置2011比较所有BMSP的实际执行成本。
步骤107:SQL执行装置101执行实际成本最小的BMSP。
步骤108:执行计划管理装置203将所执行的BMSP的实际成本更新到执行计划基准表2042中。进入步骤113。
步骤109:SQL执行装置101执行LCSP。
步骤110:执行计划管理装置203将所执行的LCSP的相关信息写入执行计划基准表2042中。进入步骤113。
步骤111:执行计划管理装置203检索该语句的执行计划历史记录。若存在,则进入步骤109;否则进入步骤112。
步骤112:执行计划管理装置203将LCSP的相关信息写入执行计划历史表2041,进入步骤109。
步骤113:流程结束。
图8示出了依照本发明实施例的基于实践检验的执行计划优化方法在执行计划基准优化时的工作流程,其具体步骤如下:
步骤201:任务调度装置2022定时调度执行计划优化任务。
步骤202:执行计划评估装置2021获取执行计划历史表2041中的记录,并依次评估其中每一个执行计划的成本。
步骤203:执行计划评估装置2021比较历史执行计划的评估值和执行计划基准的实际成本。若历史执行计划评估值小于最小的执行计划基准的实际成本,则进入步骤204;否则进入步骤205。
步骤204:执行计划管理装置203将该历史执行计划写入执行计划基准表2042中。
步骤205:流程结束。
下面以图9所示的一个示例来说明本方法的应用过程。图9是本发明基于实践检验的执行计划优化方法的一个具体应用场景,在数据库所在的服务器上部署基于实践检验的优化装置,在数据库中创建该优化装置所需的数据存储表,即执行计划历史表和执行计划基准表。
数据库装置接收用户终端提交的SQL语句,执行计划管理装置获取数据库装置输出的SQL语句执行计划,并检索数据存储装置的执行计划基准,提供给基于实践检验的执行计划优化装置。基于实践检验的执行计划优化装置实时地对SQL语句进行优化,并最终提交给数据库装置执行。
执行计划基准优化装置独立于基于实践检验的执行计划优化装置运行,它定时调度执行计划基准优化任务,随数据库系统环境的变化而不断更新执行计划基准表,从而为实时的执行计划优化任务提供决策支持,使之选择的执行计划最大化接近现实中最优的执行计划。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1.一种基于实践检验的执行计划优化的装置,其特征在于,该装置包括相互连接的数据库装置(1)和基于实践检验的优化装置(2),其中:
数据库装置(1),用于实现关系型数据库的数据存储、结构化查询语言SQL语句的优化,以及对执行计划的执行;
基于实践检验的优化装置(2),用于接收数据库装置(1)输出的传统的基于成本的优化执行计划,并返回经过实践检验的执行计划给数据库装置(1);
其中,所述数据库装置(1)向基于实践检验的优化装置(2)输出传统的基于成本的优化执行计划,并执行基于实践检验的优化装置(2)返回的经过实践检验的执行计划,包括SQL执行装置(101)、基于成本的执行计划优化装置CBO(102)和数据库(103),其中:
SQL执行装置(101),用于对用户提交的SQL语句进行语法解析,将解析后的查询块提交给CBO(102),并执行基于实践检验的优化装置(2)返回的经过实践检验的执行计划;
CBO(102),用于对解析后的查询块进行重新排序或改变其关联方式以产生更优的执行计划,通过从数据库(103)中获取查询块所访问对象的统计信息来计算查询结果的行数、比率,预估不同访问路径所消耗的CPU、I/O、内存资源,进而产生多种执行计划,并选取执行成本最小的执行计划作为传统的基于成本的优化执行计划,返回给基于实践检验的优化装置(2);
数据库(103),用于实现关系型数据库的数据存储和访问控制,并在SQL语句优化过程中提供用于估算执行计划成本的各类统计信息;
所述基于实践检验的优化装置(2)包括执行计划优化装置(201)、执行计划基准优化装置(202)、执行计划管理装置(203)和数据存储装置(204),其中:
执行计划优化装置(201),用于二次优化CBO(102)生成的执行计划,以提供给SQL执行装置(101)执行;
执行计划基准优化装置(202),用于定时更新执行计划基准表中的数据,使其中的执行计划基准随系统环境的变化而变化,保证执行计划基准的确为现实中最优的执行计划;
执行计划管理装置(203),用于对数据存储装置(204)中的记录进行查询、添加、删除或更新;
数据存储装置(204),用于执行计划相关数据的存储,包括执行计划历史表(2041)和执行计划基准表(2042)。
2.根据权利要求1所述的基于实践检验的执行计划优化的装置,其特征在于,所述CBO(102)预估的不同访问路径包括索引和全表扫描。
3.根据权利要求1所述的基于实践检验的执行计划优化的装置,其特征在于,所述执行计划优化装置(201)通过对基于成本的优化执行计划LCSP和多个基准执行计划BMSP进行有效性验证、执行计划匹配以及执行成本比较,确定最终使用的经过实践检验的执行计划,并提交给数据库装置(1)中的SQL执行装置(101),同时获取SQL语句的实际执行成本,并反馈至执行计划管理装置(203),执行计划管理装置(203)将该SQL语句的实际执行成本记录或更新至执行计划基准表。
4.根据权利要求3所述的基于实践检验的执行计划优化的装置,其特征在于,所述执行计划优化装置(201)包含执行计划比较装置(2011)、执行计划匹配装置(2012)和执行计划验证装置(2013),其中:
执行计划验证装置(2013),用于在接收到执行计划管理装置(203)发送的LCSP和多个BMSP之后,验证其对当前系统环境的有效性,并将有效的基准执行计划输出至执行计划匹配装置(2012);
执行计划匹配装置(2012),用于将LCSP同多个BMSP进行一一匹配,若匹配成功,则直接将该LCSP输出至SQL执行装置(101),若无法匹配,则将BMSP输出至执行计划比较装置(2011);
执行计划比较装置(2011),用于根据实际执行成本对多个BMSP进行比较,选择实际成本最小的执行计划输出至SQL执行装置(101)。
5.根据权利要求1所述的基于实践检验的执行计划优化的装置,其特征在于,所述执行计划基准优化装置(202)定期调度优化程序以进行历史执行计划和基准执行计划的比较,若产生了优于原基准的新执行计划,则反馈至执行计划管理装置(203),执行计划管理装置(203)将该优于原基准的新执行计划写入数据存储装置(204)的执行计划基准表中。
6.根据权利要求5所述的基于实践检验的执行计划优化的装置,其特征在于,所述执行计划基准优化装置(202)包括任务调度装置(2022)和执行计划评估装置(2021),其中:
任务调度装置(2022),包含有定时器,当用户配置完优化任务的执行起止时间及执行频度之后,任务调度装置(2022)将定时启动执行计划评估装置(2021);
执行计划评估装置(2021),用于获取执行计划历史表(2041)的记录并评估其可能的执行成本,将评估成本小于执行计划基准的实际成本的执行计划提供给执行计划管理装置(203),以更新执行计划管理装置(203)中的执行计划基准表。
7.根据权利要求6所述的基于实践检验的执行计划优化的装置,其特征在于,所述执行计划评估装置(2021)启动后,执行计划评估装置(2021)从执行计划管理装置(203)中获取执行计划历史表和执行计划基准表,预估执行计划历史表中的执行计划的执行成本,并使之与最小的基准执行计划进行比较,若小于则将执行计划历史表中的执行计划输出至执行计划管理装置(203),执行计划管理装置(203)将该执行计划写入执行计划基准表。
8.根据权利要求1所述的基于实践检验的执行计划优化的装置,其特征在于,所述执行计划管理装置(203)进一步用于接收数据库装置(1)的CBO(102)输出的传统的LCSP,从数据存储装置(204)中检索是否存在该语句的历史执行计划或BMSP,并将该传统的LCSP与数据存储装置(204)中存储的多个BMSP输出至执行计划优化装置(201)。
9.根据权利要求1所述的基于实践检验的执行计划优化的装置,其特征在于,所述执行计划历史表(2041)用于存储执行次数多于一次的执行计划的相关信息,所述执行计划基准表(2042)用于存储实际执行成本较少的SQL语句执行计划的相关信息。
10.一种基于实践检验的执行计划优化的方法,应用于权利要求1至9中任一项所述的装置,其特征在于,该方法包括:
数据库装置向基于实践检验的优化装置输出传统的基于成本的优化执行计划;
基于实践检验的优化装置检索是否存在与该基于成本的优化执行计划相关的历史执行计划或基准执行计划BMSP,对基于成本的优化执行计划LCSP和多个基准执行计划BMSP进行有效性验证、执行计划匹配以及执行成本比较,确定最终使用的经过实践检验的执行计划,返回给数据库装置;以及
数据库装置执行该经过实践检验的执行计划;
其中,所述数据库装置向基于实践检验的优化装置输出传统的基于成本的优化执行计划之前,还包括:数据库装置中的SQL执行装置接收用户提交的SQL语句,数据库装置中的CBO根据该SQL语句生成传统的基于成本的优化执行计划;
所述基于实践检验的优化装置检索是否存在与该基于成本的优化执行计划相关的历史执行计划或基准执行计划BMSP,对基于成本的优化执行计划LCSP和多个基准执行计划BMSP进行有效性验证、执行计划匹配以及执行成本比较,确定最终使用的经过实践检验的执行计划,包括:基于实践检验的优化装置中的执行计划管理装置检索数据存储装置中否存在该SQL语句的基准执行计划,若存在,则验证该基准执行计划的有效性,然后将基于成本的优化执行计划与有效性的基准执行计划进行匹配,若匹配成功,则将该基于成本的优化执行计划确定为经过实践检验的执行计划;若匹配失败,则比较所有基准执行计划的实际执行成本,选择实际成本最小的基准执行计划为经过实践检验的执行计划。
11.根据权利要求10所述的基于实践检验的执行计划优化的方法,其特征在于,所述确定最终使用的经过实践检验的执行计划之后,还包括:
基于实践检验的优化装置中的执行计划管理装置将确定最终使用的经过实践检验的执行计划更新到执行计划基准表中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110359329 CN102436494B (zh) | 2011-11-11 | 2011-11-11 | 基于实践检验的执行计划优化的装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110359329 CN102436494B (zh) | 2011-11-11 | 2011-11-11 | 基于实践检验的执行计划优化的装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102436494A CN102436494A (zh) | 2012-05-02 |
CN102436494B true CN102436494B (zh) | 2013-05-01 |
Family
ID=45984556
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110359329 Active CN102436494B (zh) | 2011-11-11 | 2011-11-11 | 基于实践检验的执行计划优化的装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102436494B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092970A (zh) * | 2013-01-24 | 2013-05-08 | 华为技术有限公司 | 一种数据库操作方法及设备 |
CN103309939B (zh) * | 2013-04-23 | 2016-07-20 | 税友软件集团股份有限公司 | 一种基于元数据的动态检索方法及装置 |
CN103399963A (zh) * | 2013-08-26 | 2013-11-20 | 苏州国云数据科技有限公司 | 基于Hive的优化器优化方法 |
IN2013MU02853A (zh) * | 2013-09-02 | 2015-07-03 | Tata Consultancy Services Ltd | |
US10019478B2 (en) | 2013-09-05 | 2018-07-10 | Futurewei Technologies, Inc. | Mechanism for optimizing parallel execution of queries on symmetric resources |
CN104182540B (zh) * | 2014-09-03 | 2017-10-27 | 北京国双科技有限公司 | 数据仓库中的索引统计信息处理方法及装置 |
WO2017015792A1 (en) * | 2015-07-24 | 2017-02-02 | Cai Yongcheng Eddy | Sql performance recommendations and scoring |
CN106528551A (zh) * | 2015-09-09 | 2017-03-22 | 北京国双科技有限公司 | 申请内存的方法和装置 |
CN105279250B (zh) * | 2015-10-08 | 2019-03-26 | 国网天津市电力公司 | 一种基于自学习方式的关系型数据库查询性能优化方法 |
CN106991101B (zh) * | 2016-01-21 | 2021-02-02 | 阿里巴巴集团控股有限公司 | 一种数据表分析处理的方法和装置 |
CN106407246B (zh) * | 2016-07-22 | 2020-12-04 | 平安科技(深圳)有限公司 | Sql执行计划管理的方法及装置 |
CN108073612A (zh) * | 2016-11-14 | 2018-05-25 | 平安科技(深圳)有限公司 | 同步sql执行计划的方法和装置 |
CN107451203B (zh) * | 2017-07-07 | 2020-09-01 | 阿里巴巴集团控股有限公司 | 数据库访问方法及装置 |
CN110069522A (zh) * | 2017-11-10 | 2019-07-30 | 阿里巴巴集团控股有限公司 | 数据查询方法和装置 |
CN108733789B (zh) * | 2018-05-11 | 2021-11-19 | 北京奥星贝斯科技有限公司 | 数据库操作指令的执行计划演进方法、装置以及设备 |
CN110134706A (zh) * | 2019-04-01 | 2019-08-16 | 平安科技(深圳)有限公司 | Sql语句自动优化方法、装置、计算机设备以及存储介质 |
CN110297858B (zh) * | 2019-05-27 | 2021-11-09 | 苏宁云计算有限公司 | 执行计划的优化方法、装置、计算机设备和存储介质 |
CN111290929B (zh) * | 2020-02-10 | 2023-06-27 | 珠海图思科软件有限公司 | 一种等价sql语句性能的测试方法、计算机装置及计算机可读存储介质 |
CN113312371A (zh) * | 2020-02-27 | 2021-08-27 | 华为技术有限公司 | 执行计划的处理方法、设备及系统 |
CN111639096B (zh) * | 2020-05-29 | 2024-03-08 | 北京奇艺世纪科技有限公司 | 一种sql语句的执行方法、装置、电子设备及存储介质 |
CN113448967B (zh) * | 2021-07-20 | 2022-02-08 | 威讯柏睿数据科技(北京)有限公司 | 一种对数据库操作进行加速的方法和装置 |
CN115062048B (zh) * | 2022-07-27 | 2022-10-28 | 北京易鲸捷信息技术有限公司 | 在分布式数据库上手动指定执行计划的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8452756B2 (en) * | 2006-11-09 | 2013-05-28 | International Business Machines Corporation | Database execution detail repository |
CN101021874B (zh) * | 2007-03-21 | 2010-05-26 | 金蝶软件(中国)有限公司 | 一种对查询sql请求进行优化的方法及装置 |
-
2011
- 2011-11-11 CN CN 201110359329 patent/CN102436494B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN102436494A (zh) | 2012-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102436494B (zh) | 基于实践检验的执行计划优化的装置及方法 | |
Poess et al. | Why You Should Run TPC-DS: A Workload Analysis. | |
US11429584B2 (en) | Automatic determination of table distribution for multinode, distributed database systems | |
Nambiar et al. | The Making of TPC-DS. | |
Poess et al. | TPC-DI: the first industry benchmark for data integration | |
US20210286786A1 (en) | Database performance tuning method, apparatus, and system, device, and storage medium | |
US8239369B2 (en) | Method and apparatus for enhancing performance of database and environment thereof | |
US20110035369A1 (en) | Query Optimization with Memory I/O Awareness | |
US7743052B2 (en) | Method and apparatus for projecting the effect of maintaining an auxiliary database structure for use in executing database queries | |
US20080010240A1 (en) | Executing alternative plans for a SQL statement | |
US20090106306A1 (en) | SQL Execution Plan Baselines | |
US20100082599A1 (en) | Characterizing Queries To Predict Execution In A Database | |
CN105930428A (zh) | 用于执行多租户存储中的交叉存储连接的方法和系统 | |
US9589019B2 (en) | Performance analysis of a database | |
CN104620239A (zh) | 自适应查询优化 | |
CN102081625A (zh) | 一种数据查询的方法及查询服务器 | |
Rabl et al. | Just can't get enough: Synthesizing Big Data | |
CN102110013A (zh) | 用于有效生成处理器体系结构模型的方法和设备 | |
CN102622260A (zh) | 一种在线迭代编译的优化方法和优化系统 | |
US20130060782A1 (en) | Determining indexes for improving database system performance | |
US7870123B2 (en) | Database optimizer plan validation and characterizations | |
Othayoth et al. | The making of tpc-ds | |
US20070294214A1 (en) | System and Method for Managing Execution of Queries Against Database Samples | |
US20130024483A1 (en) | Distribution of data within a database | |
CN108829578A (zh) | 一种cdr关联回填准确性自动化测试方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |