CN102362276A - 测试数据库查询引擎的效率和稳定性 - Google Patents
测试数据库查询引擎的效率和稳定性 Download PDFInfo
- Publication number
- CN102362276A CN102362276A CN2010800137470A CN201080013747A CN102362276A CN 102362276 A CN102362276 A CN 102362276A CN 2010800137470 A CN2010800137470 A CN 2010800137470A CN 201080013747 A CN201080013747 A CN 201080013747A CN 102362276 A CN102362276 A CN 102362276A
- Authority
- CN
- China
- Prior art keywords
- query
- execution plan
- query execution
- plan
- optimizer
- 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.)
- Granted
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
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
Abstract
本文描述了用于测试数据库查询引擎的稳定性和效率的系统、方法和计算机程序产品。在一个实施例中,由查询优化器考虑的所有可能的查询执行计划以抽象计划(AP)的形式被保存。然后给每个AP依次提供查询以测试堆栈跟踪和在查询执行的过程中可能出现的不正确结果。一个实施例包括:通过比较每个AP和由查询优化器选择的查询执行计划来确定优化器效率指数(OEI),基于相对于由查询优化器选择的查询执行计划性能的提高或降低程度,将AP分成各个性能桶(performance bucket)。在另一实施例中,为了确定优化器效率指数,AP基于估计成本被排序,并基于查询优化器估计和实际的执行行为被分成多个类。
Description
技术领域
本发明涉及测试数据库查询引擎的稳定性和效率。
背景技术
查询优化器是一种试图确定执行查询的最有效途径的数据库管理系统的组件。如果设计和实现恰当,查询优化器可以明显提高数据库管理系统(DBMS)查询处理的效率。
测试任何数据库系统的稳定性和效率是有挑战的,原因是由查询优化器所选择的查询执行计划是受包括在底层数据库表中的数据大小、数据分布和待执行以操纵数据的查询类型的因素以及其它因素影响的。
已经提出测试查询引擎的性能的不同方法。一个此类的测试方法包括选择具有一个或多个判定的查询,并将其提供给DBMS内的查询优化器。查询优化器生成查询执行计划(QEP),然后查询基于所生成的QEP被执行。用户然后可以使用诸如查询执行时间的参数来确定查询优化器的性能。
此测试方法的局限性之一是查询优化器对于给定的查询很大可能会生成与之前为相同查询生成的相同的QEP。如果与查询的引用之间的查询优化器关联的任何底层成本结构没有变化,则此局限性便会存在。结果,当使用此方法时,与查询优化器关联的查询执行引擎会被测试仅有限的代码次数或执行路径次数。
因此,需要全面测试数据库查询引擎的稳定性和效率同时克服现有测试方法的局限性的系统、方法和计算机程序产品。
发明内容
简要地说,本发明包括用于测试数据库查询引擎的稳定性和数据查询优化器的效率的系统、方法、计算机程序产品的实施例和组合和其子组合。
在一个实施例中,由查询优化器考虑的可能的查询执行计划以抽象计划(AP)的形式被保存。随后给每个AP提供查询以测试堆栈跟踪和在查询执行过程中可能出现的不正确结果。
一个实施例包括通过将每个AP与由查询优化器选择的查询执行计划比较来确定优化器效率指数(OEI),并基于相对于由查询优化器选择的查询执行计划的性能提高或降低程度将AP分成各个性能桶(performance bucket)。在另一实施例中,为了确定优化器效率指数,AP基于估计成本被排序,并基于查询优化器估计和实际的执行行为被分成多个类。
这样,本发明的实施例提供测试由查询优化器考虑的可能的执行计划的系统的方式,从而广泛地测试数据库查询引擎的潜在误差。
下面参照附图详细描述本发明的另外的实施例、特征和优点以及本发明的各个实施例的结构和操作。
附图说明
被包括在此处并构成说明书的一部分的附图说明本发明的实施例,并与描述一起进一步用来解释本发明的原理,使得相关领域的技术人员能够构造并使用本发明。
图1说明根据本发明的实施例的示例的数据库管理系统(DBMS)。
图2说明根据本发明的实施例的测试引擎。
图3说明本发明的实施例的示例的性能桶。
图4A是说明本发明的实施例的测试引擎的示例性操作的流程图。
图4B是说明本发明的另一实施例的测试引擎的示例性操作的流程图。
图5是说明本发明的一个实施例的示例的测试方法的流程图。
图6是说明用来实现本发明的实施例的组件的示例的计算机。
结合附图由下文给出的详细描述,本发明的特征和优点将变得更加明显。图中,相似的附图标记一般表示相同、功能相似和/或结构相似的元件。通常,某元件首次出现的图以相应的附图标记的最左边的数字表示。
具体实施方式
本发明涉及用于测试数据库查询引擎的稳定性和数据库查询优化器的效率的系统、方法、计算机程序产品的实施例和其组合和子组合。
在一个实施例中,由查询优化器考虑的可能的查询执行计划以抽象计划(AP)的形式被保存。接着给每个AP提供查询以测试堆栈跟踪和在查询的执行过程中可能出现的不正确结果。
一个实施例包括通过比较每个AP和由查询优化器所选择的查询执行计划来确定优化器效率指数(OEI),并基于相对于由查询优化器所选择的查询执行计划的性能提高或降低程度将AP分成各个性能桶。在另一实施例中,为了确定优化器效率指数,AP基于估计成本被排序,并基于查询优化器估计和实际的执行行为被分成多个类。
这样,本发明的实施例提供测试由查询优化器所考虑的每个可能的执行计划的系统的方法,从而广泛地测试与查询优化器关联的数据库查询引擎的潜在误差。
尽管在本文中参照具体应用的说明性实施例描述本发明,但应该理解本发明不局限于此。阅读本文提供的教导的本领域技术人员会认识到,在本发明的范围和本发明特别有用的附加领域内,还具有许多附加修改、应用和实施例。
DBMS概述
本发明的实施例可在图1中显示的示例客户机/服务器数据库系统100中操作。系统100包括通过网络120与服务器130通信的一个或多个客户机110。数据库管理系统(DBMS)140驻存在服务器130中。要注意的是,示例的客户机/服务器数据库系统100显示于图1中,这里的讨论仅出于说明的目的而不是限制的目的。本发明不局限于图1的例子。
操作中,客户机110通过向DBMS 140发出SQL语句来将数据存储到数据库表150的行155中或从行155中检索数据。从客户机110接收的SQL语句由DBMS 140的查询引擎160处理。SQL是众所周知的,在许多公众可得的文献中有描述,包括由AmericanNational Standards Institute(美国国家标准局)出版的AmericanNational Standard ANSI/ISO/IEC 9075:1992(美国国家标准ANSI/ISO/IEC 9075:1992)“Information Technology Databaselanguages-SQL(信息技术-数据库语文--SQL)”,其通过引用被全文合并于此。
在一个实施例中,查询引擎160包括解析器161,规范器163,编辑器165,查询优化器166,代码生成器167,执行单元169和存取方法170,现在对它们进行描述。
从客户机110接收的SQL语句被传送到解析器161,解析器161将语句转换成查询树,查询树是一种以为系统方便选择的格式表示的查询组件的二进制树数据结构。在此方面,解析器161采用众所周知的解析方法(例如,递归下降分析)。
查询树被规范器163规范化。规范化包括例如去掉冗余数据。另外,规范器163可以执行误差检查,如确认出现在查询中的表名字和列名字是有效的(例如可用且合成整体)。最后,规范器163还可以查寻任何存在的参照完整性约束,并将其加入到查询中。
在规范化之后,查询树被传送到编辑器165,编辑器165包括查询优化器166和代码生成器167。查询优化器166负责优化查询树。在一个实施例中,查询优化器166执行基于成本的分析以制定查询执行计划。查询优化器166例如会选择表的结合次序,并选择相关索引145。查询优化器166因此执行查询分析,并从多个生成的执行计划中确定最佳执行计划,这里“最佳”是根据任何规定的标准判定的,这又导致在由执行单元169进行的查询执行中被调用的具体存取方法170。
抽象计划
抽象计划(AP)是查询优化器的语言接口,通过它查询优化器166给出期望查询执行计划的描述。
通常,AP表达提供在查询优化器166做出决定的层面上查询执行计划的描述。作为纯粹的说明性例子,AP可以描述查询执行计划,但允许优化器166选择查询执行计划的合适的实现。
AP语言还可以基于物理级关系代数被认为是2-向用户优化器通信机制。AP表达既可以由查询优化器166使用以描述它选择的计划,也可以由用户使用以指导查询优化器选择。AP不是查询的文本部分。
示例的AP语言是SYBASE自适应服务器企业(ASE)抽象计划(AP)语言,其在本文中只是出于说明目的并非限制目的被提及。AP在许多公众可以获得的文献中有详细描述,诸如标题为“Database System with Methodology for Reusing Cost BasedOptimization Decisions(重新使用基于成本的优化判定方法论的数据库系统)”的美国专利6,618,719,其通过引用被全文合并于此。
尽管下文是根据AP描述的,但应认识到本发明的实施例同样可适用于包括但不局限于AP的所有形式的查询执行计划。
测试策略
在一个实施例中,查询优化器166可以被配置成对于给定查询保存(存储)所有可能的查询执行计划,然后可以用来执行该查询。举一个例子,此类操作可以通过与查询优化器166关联的AP枚举选项获得。这样,AP枚举可有助于验证查询执行计划的正确性。AP枚举还可以用来识别查询优化器166没有选择的较好性能计划。
举一个例子,假设有n个AP,即P1到Pn。在一个实施例中,查询优化器166顺序应用这n个AP到每个查询的执行。这样,由于查询是基于每个AP(即P1到Pn)执行的,用户测试查询引擎160有效地获得好象查询优化器166不存在于查询引擎160中的结果。这是因为查询优化器166会为某个查询(例如抽象计划pi)选择单个的AP。但是,因为本发明的实施例允许查询优化器166考虑的所有AP被应用于查询的执行,只要执行对所有查询不再局限于单个AP,测试引擎250的测试是独立于查询优化器166进行的。在一个实施例中,不旨在限制本发明,AP的枚举出现在查询引擎160中,而逐个读取AP并将其应用到查询的执行的步骤是通过测试引擎250完成的。测试引擎250的操作将在下文进一步描述。
因此,使用AP枚举选项,查询优化器166可以配置为生成并保存所有抽象计划(P1到Pn)或其任何子集。否则,查询优化器166会忽视,不考虑许多AP,而对于给定查询的执行只选择一个计划。
这样,本发明的实施例提供测试由查询优化器考虑的多个可能的执行计划的系统方法,从而广泛测试与查询优化器关联的数据库查询引擎的潜在误差。而且,例如,测试数据库查询引擎160的稳定性可进一步包括测试解析器161、优化器166、存取方法170和与查询引擎160关联的其它任何模块的稳定性。这是因为堆栈跟踪会出现在这些模块中的任何模块,不正确的结果会由于潜在误差出现在上述模块中的任何一个中。另外,本发明的实施例除了允许测试优化器166的稳定性之外还允许测试优化器166的效率。因此,稳定性测试例如可以应用到与查询引擎160关联的所有模块,但是效率测试是优化器166的效率测试。
如之前描述的,使用AP枚举选项,查询优化器166可以生成并保存所有抽象计划的方式被配置。
在一个实施例中,测试引擎250可使用在将AP应用到查询的执行之后获得的两个不同的测试方法即排序方法和性能桶方法的信息。
排序方法
在此实施例中,测试引擎250基于估计成本对查询计划(AP)排序。举一个例子,但不旨在限制本发明,估计成本可以基于使用AP的查询的优化器成本估计,查询的资源消耗,逻辑I/O,物理I/O或其组合。同样,这些参数是由优化器166估计的。而且,例如,排序包括基于所选择的参数以升序排序所有AP。
测试引擎250可以将这些个别的AP分成多个类。在一个实施例中,不旨在限制本发明,测试引擎250可以将各个AP分成三类。这些示例性的类图示于表1中。
表1
类I | 包括前20个AP或20%的AP |
类II | 包括中间60%的AP |
类III | 包括底部20%的AP |
如示例的表1中所图示的,类I包括基于它们的估计成本的前20或20%的AP。类II包括中间60%的AP,类III包括基于它们估计的成本由测试引擎250分类的底部20%的AP。
现在,测试引擎250基于使用AP的实际执行时间参数相应地形成类I,II和III。举一个例子,当类(类I-III)是基于执行时间形成时,这些类是使用查询的实际执行时间(即逝去时间)形成的。表2说明此示例的类。如表2所示,抽象计划AP12和A12基于优化器估计被分成类I。以相似方式,抽象计划AP’12和AP’12基于由测试引擎250观察的实际执行行为分类。
表2
类 | 基于优化器估计分类 | 基于所观察的实际执行行为分类 |
类I | AP11,AP12,... | AP’11,AP’12,... |
类II | AP21,AP22,... | AP’21,AP’22,... |
类III | AP31,AP32,... | AP’31,AP’32,... |
由测试引擎250进行的的此分类允许测试引擎250验证基于优化器估计落在每个类中的AP是否落在基于实际的执行行为的相应的类中。而且,例如,AP在类中的次序可以不象它们属于同一类那样重要。
举一个例子,不旨在限制本发明,优化器效率指数或(OEI)可根据如下确定。
优化器效率指数{排序方法}=出现在基于执行行为的类I中的AP的次数/出现在基于优化器估计的类I中的AP的次数
上述以出现在基于执行行为的类I中的AP的次数与在基于优化器估计的类I中的那些AP的比率获得OEI的方法允许测试引擎250识别基于优化器166估计被分类为类I且还基于所观察的执行行为被分类为类I的计划的次数。
举一个例子,OEI可以是介于0和1之间的一个值(例如在[0,1]区间中)。而且,例如为0的OEI值可以表示优化器166是无效率的,而为1的OEI值表示有效的优化器。
性能桶方法
图2说明测试引擎250,其根据本发明的实施例确定查询优化器166的效率。
在一个实施例中,AP中的每一个,p1到pn具有与其相关的由查询优化器166确定的估计成本。此成本可以反映处理给定AP所需的处理资源,或者可以基于其它任何定义的(一个或多个)因素。测试引擎250然后可以使用AP,估计成本和由基于AP查询的执行所确定的实际成本来计算查询优化器166的效率。同样,测试引擎250可以使用估计成本和实际成本来计算除了查询优化器166的效率之外的参数。
在一个实施例中,测试引擎250将AP分成几个性能桶,每个性能桶表示一个AP相对于由查询优化器166所选择的查询执行计划的性能的性能。举一个例子。不旨在限制本发明,AP的性能可以基于使用AP的查询的执行时间,查询的资源消耗,逻辑I/O,物理I/O或其组合。
例如,假设认为有n个AP,查询优化器166从n个AP中选择一个AP。让此选择的计划作为默认计划“Pd”。测试引擎250然后比较查询优化器166考虑的每隔一个AP与默认计划“Pd”,并将这些比较的AP排序成多个性能桶。
在另一例子中,测试引擎250将AP的实际成本(cj)与默认计划pd的成本比较。举一个例子,与AP关联的成本可以是执行时间,产生的逻辑和物理I/O的组合或资源消耗。如果具有实际成本cj的AP表现得比计划pd好,则它被置于正性能桶中。但是,如果AP表现得比计划pd差,则测试引擎250可以将它置于负性能桶中。这样,例如AP可以相对于由优化器166选择的默认计划(AP)被分布在正或负性能桶中。
在基于其相对于由优化器选择的默认计划的性能(pd)对AP分类之后,使用性能桶方法的OEI可以根据以下确定:
优化器效率指数{性能桶方法}=(总AP的数目)-(正性能桶中计划的数目)/总AP的数目
如之前描述的,OEI可以是0和1之间的一个值(例如间隔(0,1))。而且,例如,0的OEI值可以表示优化器166是无效的,而1的OEI值表示优化器166是有效的。
尽管基于性能桶方法和排序方法的OEI是不同的,并提供优化器的效率,本发明的实施例和测试引擎250可以基于这些参数确定其它指数。
图3说明由测试引擎250用来基于其性能组织AP的示例的性能桶。
参照图3,如果AP表现得比由查询优化器166选择的查询执行计划好26%,则它由测试引擎250被分类在间隔(25%,50%]中。
在另一例子中,性能桶(10%,25%]用来保存比默认计划pd好20%的查询执行计划。以相似方式,桶[-25%,-10%)用来保存比默认计划pd表现差20%的查询执行计划。图3中所示的其它性能桶用来保存呈现其它的性能提高或降低的查询执行计划。
这样,如果测试引擎250判定几乎没有计划表现得比由查询优化器166选择的默认计划pd好,则它可以判定查询优化器166正有效地执行优化查询的任务。
要认识到图3中所示的性能值和性能桶间隔用于说明的目的,不旨在限制本发明。可以使用诸如但不限于[-75%,-50%)或(25%,60%]的其它性能间隔。
如图3中所示,存在多个性能桶(类或组),每个被配置成保存由查询优化器166考虑的AP。基于性能降低或增强,这些桶被配置成保存不同的AP。因此,测试引擎250将查询优化器166考虑的每个查询执行计划与默认计划pd比较,如果它判定给定计划表现得比pd好,则基于与该AP关联的增强或降低,它被置于正或负性能桶中。
一旦测试引擎250已经比较了所有由查询优化器166考虑的计划,则它然后确定已经被分成正性能桶的AP和已经被分类成负性能桶的AP的数目的计数。
在一个实施例中,如果负性能桶中的AP比正性能桶中的AP多很多,则测试引擎250判定查询优化器166正有效地执行。这是因为查询优化器166正有效地去掉与默认计划pd相比性能不那么有效的大量计划。
如果与负性能桶相比,正性能桶中有明显多的计划,则测试引擎250判定查询优化器166不在有效地执行。这是因为查询优化器166正忽略与默认计划pd相比其性能更有效的大量计划。如果它已经考虑并使用了那些忽视的计划来执行查询,则查询优化器166的性能会更有效。
现在参数图4A中的流程图400详细描述根据本发明的实施例的使用性能桶方法的测试引擎250的示例的操作。
在步骤402,方法400开始,测试引擎250将由查询优化器166考虑的AP的性能和已经由优化器166选择的默认计划pd比较。举一个例子,不旨在限制本发明,AP的性能可以基于使用AP的查询的执行时间或其它任何规定的因素。
在步骤404,如果AP表现得比计划pd好,则它被测试引擎250置于正性能桶中(步骤406),方法400前进到步骤410。
返回步骤404,如果AP表现得比计划pd差,则测试引擎250将它置于负性能桶中(步骤408),方法前进到步骤410。
在一个实施例中,测试引擎250对由查询优化器166考虑的所有查询执行计划执行步骤402-408。
在步骤410,测试引擎250对正性能桶和负性能桶中的AP的数目进行计数。
测试引擎250然后使用性能桶方法计算OEI(步骤412),并判定查询优化器166是否正有效地执行(步骤414)。举一个例子,测试引擎250通过将计算的OEI与预置阈值OEI值比较来判定查询优化器166是否正有效地执行。而且,例如,测试引擎250可以基于根据这些AP的总体应用性能改变预置OEI值,为测试查询优化器166产生学习框架。
如果与正性能桶相比负性能桶中有明显少得多的AP,则测试引擎250判定查询优化器166正无效地执行(步骤416)。
“明显”是可以由用户或系统规定的阈值。在一个实施例中,“明显”是简单多数。在其它实施例中,“明显”可以是用户规定的超级多数。
这样,AP在性能桶中的分布有助于确定查询优化器166的效率和有效性。
现在参考图4B中的流程图420详细描述根据本发明的实施例的使用排序方法的测试引擎250的示例的操作。
在步骤422,方法400开始,测试引擎250基于估计成本对AP排序。
在步骤424,测试引擎250基于它们的实际执行成本将AP分成多个类。如之前描述的,测试引擎250可以将AP分成三个不同的类,诸如类I,类II和类III。
在步骤426,测试引擎250可以使用排序方法计算OEI,并判定查询优化器166是否正有效地执行(步骤428)。如之前描述的,测试引擎250通过将计算的OEI和预置阈值OEI值比较,来判定查询优化器166是否正有效地执行。
这样,基于排序方法将AP分成多个类可以允许测试引擎250确定查询优化器166的效率。
测试引擎250可以利用预置OEI值,来判定查询优化器166是否正有效地执行。如之前描述的,OEI可以是0与1之间的一个值(例如,间隔(0,1))。而且,例如,0的OEI值可以表示优化器166是无效的,而1的OEI值表示有效的优化器。在另一个例子中,如果对于由查询优化器166考虑的每100个计划,10个计划被分成正性能桶,测试引擎250可以将查询优化器166分类为有效的。类似地,如果15个计划被分成正性能桶,则测试引擎250将查询优化器166分类为无效的。在一个实施例中,测试引擎250可以基于根据这些计划的整体应用性能改变预置OEI值,产生对于测试查询优化器166的学习框架。
在用于测试的另一实施例中,由查询优化器166考虑的所有查询执行计划被测试引擎250基于它们的实际执行成本排序。举一个例子,基于估计成本或执行时间对查询执行计划的排序理想地应该产生相似结果。
与本领域技术人员已知的之前的测试方法相比,本发明的实施例考虑由查询优化器166生成的所有计划,从而广泛地测试与查询优化器关联的数据库查询引擎的潜在误差。
示例的测试方法
现在参照图5的流程图500描述根据本发明的实施例的示例的测试方法。
在步骤502,方法500开始,测试引擎250请求查询优化器166对特定查询生成多个AP。
在步骤504,查询优化器166前进以保存(存储)所有AP。举一个例子,查询优化器166可以通过将它们打印到跟踪文件中作为一个或多个AP来保存所有AP。AP可以以列出与每个AP相关的成本的格式(例如AP-AP成本)存储在跟踪文件中。而且,此格式允许信息被映射到服务器130的表中。举一个例子,与存储在跟踪文件中的AP关联的成本是与那些AP关联的估计成本。
在一个实施例中,不旨在限制本发明,步骤502-504是由查询引擎160或服务器130执行的。
返回步骤504,一旦所有AP被查询优化器166保存(存储),测试引擎250检查来自跟踪文件的所有AP和它们相应的成本(步骤506)。
在步骤508,测试引擎250将跟踪文件映射到表,并从跟踪文件中读取每个AP。
在步骤510,测试引擎250将每个AP应用到查询,并将它们发送到查询优化器166以由执行单元169后续执行(步骤512)。
在步骤514,测试引擎250如图4A或图4B所示操作,以基于排序和性能桶方法确定优化器效率指数(OEI),并如之前描述的判定优化器166是否有效地执行(步骤516)。
这样,本发明的实施例考虑所有由查询优化器166生成的计划,从而广泛测试与查询优化器166关联的数据库查询引擎的潜在误差。
示例的计算机实施例
在本发明的实施例中,本文中描述的实施例的系统和组件是使用众所周知的计算机,诸如图6中所示的示例的计算机602实现的。例如,数据库管理系统140或服务器130可以使用(一个或多个)计算机602实现。
计算机602可以是任何可商业得到的、已知的能够执行本文描述的功能的计算机,诸如可从(International Business Machines)国际商业机器、Apple,Sun,HP,Dell,Compaq,Digital,Cray等得到的计算机。
计算机602包括一个或多个处理器(也称作中央处理单元或CPU),诸如处理器606。处理器606连接到通信总线604。
计算机602还包括主或主要存储器608,诸如随机存取存储器(RAM)。主要存储器608中已经存储控制逻辑626A(计算机软件)和数据。
计算机602还包括一个或多个次级存储装置610。次级存储装置610包括例如硬盘驱动器612和/或可移动存储装置或驱动器614,以及其它类型的存储装置,诸如存储卡和存储棒。可移动存储装置614表示软盘驱动器,磁带驱动器,紧凑硬盘驱动器、光存储装置、磁带备份等等。
可移动存储驱动器614与可移动存储单元616互相作用。可移动存储单元616包括计算机可用或可读存储介质624,其中存储计算机软件628B(控制逻辑)和/或数据。可移动存储单元616表示软盘、磁带、紧凑硬盘、DVD、光存储硬盘或其它任何计算机数据存储装置。可移动存储驱动器614以众所周知的形式从可移动存储单元616中读出和/或向其写入。
计算机602还包括输入/输出/显示装置622,诸如监视器、键盘、指针装置等等。
计算机602进一步包括通信或网络接口618。网络接口618使计算机602能够与远程装置通信。例如,网络接口618允许计算机602通过通信网络或介质624B(表示计算机可用或可读介质的形式)通信,诸如LAN,WAN,互联网等等。网络接口618可以与远程站点或网络通过有线或无线连接相连接。
控制逻辑628C可以通过通信介质624B传送到计算机602或反向传送。更具体地,计算机602可以通过通信介质624B接收并传输用控制逻辑630调制的载波(电磁信号)。
包括其中存储了控制逻辑(软件)的计算机可用或可读介质的任何设备或制造品在本文中称作计算机程序产品或程序存储装置。这包括但不局限于计算机602、主存储器608、次级存储装置610、可移动存储单元616和由控制逻辑630调制的载波。其中存储了控制逻辑的此计算机程序产品当由一个或多个数据处理装置执行时,引起此数据处理装置如本文中描述的那样操作,呈现本发明的实施例。
本发明可以适用于软件、硬件和/或除了本文中描述的那些之外的操作系统实现。可以使用用来执行本文中描述的功能的任何软件、硬件和操作系统实现。
结论
要认识到,具体实施方式部分而非发明内容和摘要部分旨在用来解释权利要求书。发明内容和摘要部分可以列出一个或多个但不是全部本发明人考虑的本发明的示例的实施例,因此不旨在以任何方式限制本发明和所附权利要求书。
借助说明实现特定功能及其关系的功能构建块,上面已经描述了本发明。这些功能构建块的边界在本文中是被任意确定的,以便于描述。可以规定其它的边界,只要这些特定功能及其关系被合适地实现。
前面的特定实施例的描述将如此充分地揭示本发明的一般特性,以致于其它人不脱离本发明的总体构思,不用经过实验,通过应用本领域的技术知识,可以很容易地修改和/或改造这些特定实施例,以用于不同的应用。因此,基于本文提出的教导和指导,这种改造和修改旨在落在所公开的实施例的等同物的意义和范围内。应该理解,本文中的措词或术语是出于描述而不是限制的目的,因而本说明书的术语或措辞应当由本领域技术人员根据这些教导和指导进行解释。
本发明的宽度和范围不应该由上述的示例的实施例中的任何一个限制,而只应根据所附权利要求书和其等同物来确定。
Claims (20)
1.一种测试数据库管理系统(DBMS)中的查询引擎的方法,包括:
a.保存由查询优化器考虑的所有查询执行计划;
b.使用所述查询执行计划中的每一个查询执行计划来执行查询;
c.基于所述执行确定所述查询执行计划的性能;
d.基于所述性能对所述查询执行计划分类;和
e.通过基于所述分类计算优化器效率指数(OEI)来确定所述查询优化器的效率。
2.根据权利要求1所述的方法,进一步包括:
将所述查询执行计划保存为抽象计划(AP)。
3.根据权利要求1所述的方法,进一步包括:
检查所述步骤b执行中的不正确结果和堆栈跟踪。
4.根据权利要求1所述的方法,其中步骤c包括:
将所述查询执行计划的所述性能与由所述查询优化器选择的默认查询执行计划进行比较。
5.根据权利要求4所述的方法,其中步骤c进一步包括:
基于关于所述默认查询执行计划的性能将所述查询执行计划分成多个性能类。
6.根据权利要求5所述的方法,其中所述分类步骤包括:
如果所述查询执行计划表现得比所述默认查询执行计划好,则将查询执行计划分成正性能类;和
如果所述查询执行计划表现得比所述默认查询执行计划差,则将所述查询执行计划分成负性能类。
7.根据权利要求1所述的方法,进一步包括:
基于估计成本对所述查询执行计划排序;和
基于实际的执行行为将所述查询执行计划分成多个类。
8.根据权利要求7所述的方法,其中所述实际执行行为基于与所述查询执行计划关联的执行时间、所述查询执行计划的资源消耗和与所述查询执行计划关联的逻辑I/O和物理I/O。
9.根据权利要求7所述的方法,其中所述估计成本基于与所述查询执行计划关联的逻辑I/O和物理I/O的组合。
10.根据权利要求1所述的方法,其中步骤a包括:
通过存储到一个或多个跟踪文件作为多个抽象计划来保存所述查询执行计划。
11.一种用于测试数据库管理系统(DBMS)中的查询引擎的系统,包括:
查询优化器,其被配置成保存由所述查询优化器考虑的所有查询执行计划;
执行引擎,其被配置成使用所述查询执行计划执行查询;和
测试引擎,其被配置成基于所述执行确定所述查询执行计划的性能。
12.根据权利要求11所述的系统,其中所述测试引擎基于所述性能对所述查询执行计划进行分类。
13.根据权利要求12所述的系统,其中所述测试引擎基于多个分类的查询执行计划确定所述查询优化器的效率。
14.根据权利要求11所述的系统,其中所述测试引擎检查在所述查询的所述执行期间生成的不正确结果。
15.根据权利要求11所述的系统,其中所述测试引擎将所述查询执行计划的所述性能和由所述查询优化器选择的默认查询执行计划进行比较。
16.根据权利要求15所述的系统,其中所述测试引擎基于关于所述默认查询执行计划的性能将所述查询执行计划分成多个性能类。
17.根据权利要求11所述的系统,其中所述测试引擎基于估计成本对所述查询执行计划排序,并基于所述估计成本和实际的执行行为将所述查询执行计划分成多个类。
18.根据权利要求17所述的系统,其中所述估计成本基于与所述查询执行计划关联的执行时间、所述查询执行计划的资源消耗和与所述查询执行计划关联的逻辑I/O和物理I/O。
19.根据权利要求17所述的系统,其中所述估计成本基于与所述查询执行计划关联的逻辑I/O和物理I/O的组合。
20.一种在其中存储有控制逻辑的计算机程序产品,所述控制逻辑使处理器能够测试数据库管理系统中的查询引擎,所述控制逻辑包括:
用于使处理器保存多个查询执行计划的第一计算机可读程序代码装置;
用于使处理器能够使用所述查询执行计划执行查询的第二计算机可读程序代码装置;
用于使处理器能够确定所述查询执行计划的性能的第三计算机可读程序代码装置;
用于使处理器能够基于所述性能对所述查询执行计划进行分类的第四计算机可读程序代码装置;和
用于使处理器能够通过基于所述分类计算优化器效率指数(OEI)来确定至少所述查询优化器的效率的第五计算机可读程序代码装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/416,645 | 2009-04-01 | ||
US12/416,645 US8892544B2 (en) | 2009-04-01 | 2009-04-01 | Testing efficiency and stability of a database query engine |
PCT/US2010/028666 WO2010120465A2 (en) | 2009-04-01 | 2010-03-25 | Testing efficiency and stability of a database query engine |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102362276A true CN102362276A (zh) | 2012-02-22 |
CN102362276B CN102362276B (zh) | 2015-04-22 |
Family
ID=42827036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080013747.0A Active CN102362276B (zh) | 2009-04-01 | 2010-03-25 | 测试数据库查询引擎的效率和稳定性 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8892544B2 (zh) |
EP (1) | EP2414975A4 (zh) |
CN (1) | CN102362276B (zh) |
WO (1) | WO2010120465A2 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750690A (zh) * | 2013-12-25 | 2015-07-01 | 中国移动通信集团公司 | 一种查询处理方法、装置及系统 |
CN110537175A (zh) * | 2017-05-01 | 2019-12-03 | 华为技术有限公司 | 利用机器学习估计mppdb中的查询资源消耗 |
CN111670433A (zh) * | 2018-01-31 | 2020-09-15 | 易享信息技术有限公司 | 查询优化器约束 |
CN113064838A (zh) * | 2021-05-07 | 2021-07-02 | 阿里云计算有限公司 | 一种代码调试方法、装置、用户设备、服务端及存储介质 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120066554A1 (en) * | 2010-09-09 | 2012-03-15 | Microsoft Corporation | Application query control with cost prediction |
GB2503893A (en) * | 2012-07-10 | 2014-01-15 | Ibm | Selecting data from a database using data representing a sequence of operations |
US9390174B2 (en) | 2012-08-08 | 2016-07-12 | Google Inc. | Search result ranking and presentation |
US9384236B2 (en) * | 2013-06-14 | 2016-07-05 | Sap Se | Method and system for operating on database queries |
US10380104B2 (en) | 2016-08-09 | 2019-08-13 | International Business Machines Corporation | Method to monitor dynamic SQL statements for automatic stabilization in a data sharing environment |
US11829362B2 (en) * | 2018-05-15 | 2023-11-28 | Oracle International Corporation | Automatic database query load assessment and adaptive handling |
US11748349B2 (en) * | 2020-03-31 | 2023-09-05 | Sap Se | Customizable filtering for query plan stability in database systems using abstract query plans |
US11782918B2 (en) * | 2020-12-11 | 2023-10-10 | International Business Machines Corporation | Selecting access flow path in complex queries |
CN113656437B (zh) * | 2021-07-02 | 2023-10-03 | 阿里巴巴新加坡控股有限公司 | 用于预测参照执行代价稳定度的模型构建方法 |
US11953979B2 (en) * | 2022-02-02 | 2024-04-09 | Sap Se | Using workload data to train error classification model |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030221163A1 (en) * | 2002-02-22 | 2003-11-27 | Nec Laboratories America, Inc. | Using web structure for classifying and describing web pages |
US6721724B1 (en) * | 2000-03-31 | 2004-04-13 | Microsoft Corporation | Validating multiple execution plans for database queries |
US20050091196A1 (en) * | 2003-10-22 | 2005-04-28 | International Business Machines Corporation | Optimization of queries using retrieval status of resources used thereby |
US20060212429A1 (en) * | 2005-03-17 | 2006-09-21 | Microsoft Corporation | Answering top-K selection queries in a relational engine |
US20070162425A1 (en) * | 2006-01-06 | 2007-07-12 | International Business Machines Corporation | System and method for performing advanced cost/benefit analysis of asynchronous operations |
CN101093501A (zh) * | 2007-07-31 | 2007-12-26 | 武汉大学 | 一种高效、透明的分布式空间数据库查询方法 |
US20080215535A1 (en) * | 2004-06-03 | 2008-09-04 | International Business Machines Corporation | Autonomically generating a query implementation that meets a defined performance specification |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IL121181A0 (en) * | 1997-06-27 | 1997-11-20 | Agentics Ltd | A method and system for unifying multiple information resources into hierarchial integrated information resource accessible by means of user interface |
US6622140B1 (en) * | 2000-11-15 | 2003-09-16 | Justsystem Corporation | Method and apparatus for analyzing affect and emotion in text |
WO2003014975A1 (en) * | 2001-08-08 | 2003-02-20 | Quiver, Inc. | Document categorization engine |
US7509311B2 (en) * | 2003-08-29 | 2009-03-24 | Microsoft Corporation | Use of statistics on views in query optimization |
US20050119999A1 (en) * | 2003-09-06 | 2005-06-02 | Oracle International Corporation | Automatic learning optimizer |
US7672940B2 (en) * | 2003-12-04 | 2010-03-02 | Microsoft Corporation | Processing an electronic document for information extraction |
US20050192937A1 (en) * | 2004-02-26 | 2005-09-01 | International Business Machines Corporation | Dynamic query optimization |
US7853544B2 (en) * | 2004-11-24 | 2010-12-14 | Overtone, Inc. | Systems and methods for automatically categorizing unstructured text |
US7610264B2 (en) * | 2005-02-28 | 2009-10-27 | International Business Machines Corporation | Method and system for providing a learning optimizer for federated database systems |
US7464071B2 (en) * | 2005-04-28 | 2008-12-09 | Microsoft Corporation | System and method for forcing a query execution plan |
US7454407B2 (en) * | 2005-06-10 | 2008-11-18 | Microsoft Corporation | Techniques for estimating progress of database queries |
US7472131B2 (en) * | 2005-12-12 | 2008-12-30 | Justsystems Evans Research, Inc. | Method and apparatus for constructing a compact similarity structure and for using the same in analyzing document relevance |
US7877381B2 (en) * | 2006-03-24 | 2011-01-25 | International Business Machines Corporation | Progressive refinement of a federated query plan during query execution |
US7877373B2 (en) * | 2006-06-30 | 2011-01-25 | Oracle International Corporation | Executing alternative plans for a SQL statement |
US20080077580A1 (en) * | 2006-09-22 | 2008-03-27 | Cuneyt Ozveren | Content Searching For Peer-To-Peer Collaboration |
US20080195577A1 (en) * | 2007-02-09 | 2008-08-14 | Wei Fan | Automatically and adaptively determining execution plans for queries with parameter markers |
US7941425B2 (en) * | 2007-07-25 | 2011-05-10 | Teradata Us, Inc. | Techniques for scoring and comparing query execution plans |
US9213740B2 (en) * | 2007-10-11 | 2015-12-15 | Sybase, Inc. | System and methodology for automatic tuning of database query optimizer |
US8392404B2 (en) * | 2007-11-19 | 2013-03-05 | Teradata Us, Inc. | Dynamic query and step routing between systems tuned for different objectives |
US8312007B2 (en) * | 2008-05-08 | 2012-11-13 | International Business Machines Corporation | Generating database query plans |
US7941426B2 (en) * | 2008-05-08 | 2011-05-10 | International Business Machines Corporation | Optimizing database queries |
US8775413B2 (en) * | 2008-06-30 | 2014-07-08 | Teradata Us, Inc. | Parallel, in-line, query capture database for real-time logging, monitoring and optimizer feedback |
US20090327216A1 (en) * | 2008-06-30 | 2009-12-31 | Teradata Us, Inc. | Dynamic run-time optimization using automated system regulation for a parallel query optimizer |
US8060495B2 (en) * | 2008-10-21 | 2011-11-15 | International Business Machines Corporation | Query execution plan efficiency in a database management system |
US9177023B2 (en) * | 2009-02-02 | 2015-11-03 | Hewlett-Packard Development Company, L.P. | Evaluation of database query plan robustness landmarks using operator maps or query maps |
-
2009
- 2009-04-01 US US12/416,645 patent/US8892544B2/en active Active
-
2010
- 2010-03-25 EP EP10764828.9A patent/EP2414975A4/en not_active Ceased
- 2010-03-25 WO PCT/US2010/028666 patent/WO2010120465A2/en active Application Filing
- 2010-03-25 CN CN201080013747.0A patent/CN102362276B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6721724B1 (en) * | 2000-03-31 | 2004-04-13 | Microsoft Corporation | Validating multiple execution plans for database queries |
US20030221163A1 (en) * | 2002-02-22 | 2003-11-27 | Nec Laboratories America, Inc. | Using web structure for classifying and describing web pages |
US20050091196A1 (en) * | 2003-10-22 | 2005-04-28 | International Business Machines Corporation | Optimization of queries using retrieval status of resources used thereby |
US20080215535A1 (en) * | 2004-06-03 | 2008-09-04 | International Business Machines Corporation | Autonomically generating a query implementation that meets a defined performance specification |
US20060212429A1 (en) * | 2005-03-17 | 2006-09-21 | Microsoft Corporation | Answering top-K selection queries in a relational engine |
US20070162425A1 (en) * | 2006-01-06 | 2007-07-12 | International Business Machines Corporation | System and method for performing advanced cost/benefit analysis of asynchronous operations |
CN101093501A (zh) * | 2007-07-31 | 2007-12-26 | 武汉大学 | 一种高效、透明的分布式空间数据库查询方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750690A (zh) * | 2013-12-25 | 2015-07-01 | 中国移动通信集团公司 | 一种查询处理方法、装置及系统 |
CN110537175A (zh) * | 2017-05-01 | 2019-12-03 | 华为技术有限公司 | 利用机器学习估计mppdb中的查询资源消耗 |
US11537615B2 (en) | 2017-05-01 | 2022-12-27 | Futurewei Technologies, Inc. | Using machine learning to estimate query resource consumption in MPPDB |
CN111670433A (zh) * | 2018-01-31 | 2020-09-15 | 易享信息技术有限公司 | 查询优化器约束 |
CN113064838A (zh) * | 2021-05-07 | 2021-07-02 | 阿里云计算有限公司 | 一种代码调试方法、装置、用户设备、服务端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2010120465A3 (en) | 2011-01-13 |
EP2414975A4 (en) | 2016-05-11 |
CN102362276B (zh) | 2015-04-22 |
WO2010120465A2 (en) | 2010-10-21 |
EP2414975A2 (en) | 2012-02-08 |
US20100257154A1 (en) | 2010-10-07 |
US8892544B2 (en) | 2014-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102362276B (zh) | 测试数据库查询引擎的效率和稳定性 | |
Poess et al. | Why You Should Run TPC-DS: A Workload Analysis. | |
CN1169074C (zh) | 用于检索一个事件数据库的基于事件的推理系统和方法 | |
US7716226B2 (en) | Method and system for probabilistically quantifying and visualizing relevance between two or more citationally or contextually related data objects | |
CN101627363B (zh) | 数据库管理系统中的表达式混合求值 | |
Sapia | On Modeling and Predicting Query Behavior in OLAP Systems. | |
US10083263B2 (en) | Automatic modeling farmer | |
CN101506804A (zh) | 用于在大数据集分析期间维持一致性的方法和装置 | |
CN101178727A (zh) | 用于搜索数据库的方法和系统 | |
CN102349050A (zh) | 数据存储的创建 | |
CA2378006A1 (en) | Apparatus, systems and methods for constructing large numbers of travel fares | |
CN111754317A (zh) | 一种金融投资数据测评方法及系统 | |
US8392892B2 (en) | Method and apparatus for analyzing application | |
US6868299B2 (en) | Generating a sampling plan for testing generated content | |
US11615080B1 (en) | System, method, and computer program for converting a natural language query to a nested database query | |
CN101334793B (zh) | 一种自动识别需求依赖关系的方法 | |
US20090228328A1 (en) | Method and Apparatus for Quantifying Aesthetic Preferences in Product Design Using Production Rules | |
CN114722789B (zh) | 数据报表集成方法、装置、电子设备及存储介质 | |
US20130166892A1 (en) | Generating a runtime framework | |
CN101036140A (zh) | 产生分析数据结构的自定义等级体系的系统和方法 | |
CN113673889A (zh) | 一种智能化数据资产识别的方法 | |
US20100017244A1 (en) | Method for organizing processes | |
JP5171686B2 (ja) | 高速化検索モデリングシステムおよび方法 | |
JP2009245353A (ja) | 情報処理システムおよび情報処理方法 | |
JP2017010376A (ja) | マートレス検証支援システムおよびマートレス検証支援方法 |
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 |