CN103299299B - 高适应性查询优化器检索空间生成方法 - Google Patents
高适应性查询优化器检索空间生成方法 Download PDFInfo
- Publication number
- CN103299299B CN103299299B CN201180056140.5A CN201180056140A CN103299299B CN 103299299 B CN103299299 B CN 103299299B CN 201180056140 A CN201180056140 A CN 201180056140A CN 103299299 B CN103299299 B CN 103299299B
- Authority
- CN
- China
- Prior art keywords
- algorithm
- subscheme
- cost
- access scheme
- optimization
- 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
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Operations Research (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
用于确定来自算法池的至少一个算法以优化查询的系统、方法和制品。一个实施例包括:针对子方案构建优化块;基于优化块确定子方案的复杂度;以及基于子方案的复杂度和所选择的算法的特征,从检索空间生成算法池中选择算法;以及通过所选择的算法优化子方案。
Description
技术领域
本发明一般涉及数据库,且更具体地,涉及查询优化。
背景技术
计算机数据库已经成为用于数据存储和检索的普遍手段。数据库用户将一般性地使用数据库管理系统(“DBMS”)访问数据库中的底层数据。用户向DBMS发出查询请求,该DBMS遵照限定的查询语言。这通过下述方式简化了用户与数据库的互动,即,不要求用户知道或理解物理数据库的底层结构。但是,由于这个原因,DBMS执行对于底层数据库的最有效的查询方式是必要的。
参照图1,DBMS140包括编译器164,其包括查询优化器,例如查询优化器165。查询优化器165确定执行查询的最有效的方法。当客户110写下发送给DBMS140的SQL查询时,客户110不指定DBMS140应如何执行查询。因此,查询优化器165的有效设计对于生成有效的DBMS140是至关重要的。
查询优化器165分析查询请求且确定访问方案。这包括,例如:针对每个被访问的表选择访问方法,选择在表上执行联合运算的顺序,以及选择待用在每个联合运算中的联合方法。因为典型地,通过使用这些运算的组合存在多个用于给定查询的策略,查询优化器165生成和估计多个策略,通过总线处理(或“检索空间生成处理”)的方式从中选择最佳策略。在于2007年2月27日公告的共同拥有的第7,184,998号美国专利中提供了示例性优化策略的讨论,其全文通过引用并入本文。
传统地,查询优化器165使用单一优化算法来确定策略和形成用于优化查询的访问方案。甚至通过查询优化器165使用的相同算法在配备有不同系统资源的不同平台上执行。因此,若查询优化器165在优化处理期间耗尽可用的系统资源,查询优化器165将不能够形成访问方案。这导致DBMS140在没有通过“强力”方式的任何优化的情况下执行查询,或在没有执行查询的情况拒绝查询。因此,需要改进的查询优化器165,其可以使用选自多个有效查询优化算法中的查询优化算法来优化查询,其中,在一个实施例中,所选择的算法为在查询复杂度和可用系统资源方面代价最小的一个。在系统资源可用的情况下,还需要选择将形成访问方案的算法的查询优化器165来优化查询。
因此,需要允许查询优化器165基于可用的系统资源来选择查询优化算法的系统、方法和制品,其可以有效的优化由查询执行的检索。
发明内容
本发明所述的实施例涉及确定算法,其将优化由查询确定的数据库检索。在一个实施例中,查询被分成查询块。针对每一个查询块生成子方案。查询优化器对于每个子方案构建构造块,确定子方案的复杂度,以及选择查询优化算法,该算法基于子方案的构造块和复杂度生成来自检索空间生成算法池的访问方案。然后,查询优化器通过所选择的算法优化每一个子方案来优化查询。
在另一个实施例中,确定托管(host)数据库管理系统的服务器的状态,且基于服务器的状态连同上述参考标准选择针对每一个子方案的算法。
在另一个实施例中,通过分析与子方案结合的超图(hypergraph)的特性,查询优化器确定子方案的复杂度。
在另一个实施例中,查询优化器总是选择针对子系统生成访问方案的算法。
在另一个实施例中,查询优选器选择代价小的查询优化算法,从而优化子方案,且若使用任何代价大的算法的查询优化的成本高于用于优化子方案的最大分摊成本,则可避免代价大的优化技术。
下文中参照附图详细描述本发明的其它特征和优点,以及本发明的各种实施例的结构和操作。应当注意到,本发明不限于在此描述的具体实施例。在此呈现的这些实施例仅出于示例性的目的。根据本文中包含的教导,附加的实施例对于本领域技术人员而言是显而易见的。
附图说明
附图并入本文中并组成说明书的一部分,与文字一起示出本发明所述的实施例,还用于解释本发明的原理,且使得本领域的技术人员可以使用和制造本发明。
图1为示例性数据库计算环境,在其中可实施本发明所述的实施例。
图2为示出根据本发明所述的实施例的步骤的流程图,通过这些步骤,查询优化器可被操作,从而选择查询优化算法,该算法生成针对子方案优化的访问方案。
图3为示出根据本发明所述的实施例的预优化阶段I的步骤的流程图。
图4为示出根据本发明所述的实施例的预优化阶段II的步骤的流程图。
图5示出了示例性计算机系统,在其中可执行本发明所述的实施例。
现在将参考附图描述本发明。一般,在附图中,相同的附图标记表示相同或功能类似的元件。此外,一般地,附图标记的最左边的数字表示该附图标记首次出现的图。
具体实施方式
1.介绍
下文中对本发明的详细描述涉及示出与本发明一致的示例性实施例的附图。在本发明的精神和范围内,也可以有其他的实施例,和对实施例做出修改。因此,详细的描述不旨在限制本发明。相反,本发明的范围由所附的权利要求书限定。
本领域技术人员清楚,如下所述的,本发明可在软件、硬件、固件、和/或如图中示出的实体中被实施。实施本发明的任何实际软件代码以及硬件的具体控制都不限制本发明。因此,本发明的运行行为可被描述理解成,能对本发明的做出变型和变化,在此详细地描述。
图1为示例性数据库计算环境100,在其中可实施本发明所述的实施例。客户110可使用DBMS操作,从而与数据库服务器130通信。尽管在图1中客户110呈现为与DBMS140分开的物理机器,其是通过示例而非限制的方式被呈现。在另一个实施例中,客户110占据与DBMS140相同的物理系统。在其它实施例中,客户110是软件应用程序,其要求对DBMS140的访问,然而,在另一实施例中,客户110是手动请求访问DBMS140的人类用户。贯穿本说明书,术语客户和用户可交换使用,来表示任何硬件、软件、或人类请求者手动或自动访问DBMS140,例如客户110。
DBMS140从客户110处接收查询。该查询用于要求、改变、附加,或另外操作数据库存储器170中的信息。查询由客户110使用语法提供给DBMS140,该语法遵守查询语言。在非限制性示例性实施例中,查询语言是结构化查询语言(“SQL”),然而,可用其它语言限定查询。DBMS140可根据查询语言解释查询,且向数据库存储器170生成请求。
DBMS140包括:分析器161、规整器(未示出)、编译器164、执行单元166,以及访问方法168。
在DBMS140接收来自客户110的查询后,其由分析器161分析。在一个实施例中,分析器161将查询转化成二进制树形数据结构,尽管可以使用其它类型的数据结构。树形数据结构以对于DBMS140方便的格式呈现查询。
分析器161将查询传递给规整器(未示出)。规整器的功能是将分析的查询标准化。规整器消除冗余数据和执行被分析的查询上的初始错误检测,例如确定遵守数据库存储器170中的那些的查询中的表的名称,以及确定如通过查询所述的表之间的关系是有效的。
规整器将标准化的查询传递给编译器164,其包括查询优化器165。查询优化器165对查询进行优化。
查询优化器165确定方法或“基于成本的分析”,通过其根据查询语义最佳地操作数据库存储器170中的信息。该方法通常被定义为术语“访问方案”或“查询方案”。基于编入查询优化器165中的在选择合适的访问方案方面的考虑,查询优化器165可选择“最好”或“最佳”访问方案。术语“最好”或“最佳”访问方案在本说明书中可以交换使用。相关领域技术人员将理解,由查询优化器165选择的“最好”或“最佳”访问方案不必是可被执行的绝对最佳访问方案,而是设计在查询优化器165中的规则认为是由一些客观或主观标准确定的最好的那些访问方案。然后,该访问方案可被用于操作数据库存储器170中的数据。
在一个实施例中,查询优化器165通过将查询分成一个或更多个查询块来确定最佳访问方案。查询块包括查询的原子部分。对于每个查询块生成子方案。子方案是优化处理被调用一次或更多次的最小的SQL表表达式。子方案可由一组关系和/或其它子方案构成。查询优化器165针对每个子方案选择优化算法。所选择的算法被用于确定用于优化子方案的访问方案。如上所述,传统的优化器使用单一优化算法,从而针对所有子方案执行该功能。相反地,本发明的优化器165从多个有效检索空间生成算法或算法151中选择最佳算法,从而处理任意给定的子方案,其中,这样的选择是基于多个标准的(如下文中所述的)。对于每个子方案重复该处理,直至每个子方案具有最佳访问方案,其由存储在DBMS140的存储器150中的算法151中的一个(单独针对每个子方案选择)找到。
在一个实施例中,有效的查询优化算法151被存储在DBMS140的存储器150中。如所述的,查询优化器165针对每个子方案从算法151中选择算法,从而生成最佳访问方案和优化每个子方案。在一个实施例中,每个算法151具有不同的特征,例如不同的资源要求,算法151可以处理的查询的等级,以及查询方案的质量。在一个实施例中,存储在存储器150中的算法151的一个算法是在没有记忆左深树访问方案的情况下的返回算法151a。在另一实施例中,算法151的一个是在记忆左深树访问方案的情况下的返回算法151b。在又一实施例中,算法151的一个算法是在密集树访问方案上的动态编程算法。查询优化器165根据在图2中示出的和在下文中描述的步骤针对每个子方案选择上述算法的一个。此外,出于说明而非限制的目的呈现在此描述的算法151,且本领域的技术人员将理解,其它算法可存储在存储器150中,且由查询优化器165使用。
在一个实施例中,在没有记忆左深树访问方案的情况下的返回算法151a在服务器130的资源和利用方面是代价小的算法。在没有记忆左深树访问方案的情况下的返回算法151a在服务器130的CPU耗费方面是密集的,但是不使用大量的系统存储器150。在没有记忆左深树访问方案的情况下的返回算法151a的优点为,其针对子方案总是生成访问方案,且避免用于执行子方案的强制力方法,其有时导致使用传统的方法。
在一个实施例中,在记忆左深树访问方案的情况下的返回算法151b在CPU耗费方面是不密集的,但使用的存储器多于算法151a。
存储是本领域技术人员已知的优化技术。存储是将函数调用的输入和输出保存在系统存储器150中的技术。因为保存了函数调用的输入和输出,服务器避免处理具有相同输入的函数超过一次,且简单地检索存储在存储器150中的输出。因此,服务器130可以给其它函数或处理改变CPU时间。
在此讨论的示例算法151的一个实施例中,在密集树访问方案上具有记忆的倒置动态编程算法151c在CPU使用和存储器使用方面是最密集的。在密集树访问方案上具有记忆的倒置动态编程算法151c相比于算法151a和151b通常针对子方案确定更好的访问方案。然而,不像在没有记忆情况下的返回算法151a,在密集树访问方案上具有记忆的倒置动态编程算法151c必须运行至完成,从而生成访问方案。因此,在CPU耗费高和/或有效存储器缺乏的系统中,在密集树访问方案上具有记忆的倒置动态编程算法151c可能耗尽系统资源,且不能运行至完成。因此,算法151c可能不能生成访问算法。在传统的系统中,若在密集树访问方案上具有记忆的倒置动态编程算法151c或其他算法不能生成访问方案,则无法实现查询优化。这导致传统的DBMS140通过强力方法执行查询,或在不执行查询的情况下通过拒绝查询请求执行。
以示例而非限制的方式呈现上述算法,相关领域的技术人员将理解,存在可由查询优化器165利用的其它算法。然而,针对每个算法的关键在于,在不同的环境中很好地执行且具有不同类型的查询。在一个实施例中,算法151在其优点、缺点和/或功能方面变化,使得算法151在多种环境中整体很好地执行。此外,在一个实施例中,至少一个算法总是生成针对任何和所有子方案的访问方案。
为了选择优化正在被考虑的子方案的算法,查询优化器165分析多个因素,例如子方案的固有特性,算法151的每个算法的特性,服务器的当前状态,以及可用的系统资源。
在一个实施例中,通过检查与子方案结合的超图来分析子方案的特征。例如,通过分析超图的特征,其中,顶点对应于子方案量词(quantifier)且超边对应于如限定在子方案中的量词之间的谓语,本领域技术人员将理解子树的大致数量必须被保存在位于存储器150中的存储表中且由CPU处理器列举。通过使用记忆算法151b和151c,存储在存储表中的子树的数量对应于必须编进从而优化子方案S的系统存储器数量。必须被列举的子树的数量表示服务器130优化子方案S要求的CPU耗费。
在另一个实施例中,子方案特征示出量词节点的数量。量词节点的数量表示必须针对每个子方案列举的关系和嵌套子方案的数量。
在另一个实施例中,查询优化器165估算必须被列举的节点的数量。所估算的节点的数量表示优化器必须关注从而确定最佳访问方案的结合策略的数量。本领域技术人员可理解,在子方案中估算的节点的数量用于估算针对算法151要求的CPU时间,从而生成检索空间。在一个实施例中且出于本专利申请的目的,以微秒测量CPU时间。在K.Ono,G Lohman的“Measuring the complexity of join enumeration in query optimization(测量查询优化中的结合列举的复杂度)”中提供通过估算节点的数量而示例性评估检索空间的讨论,1990年超大型数据库(VLDB)国际会议记录中314-325页,其通过引用完全并入本文。
服务器130的当前状态为用来确定最佳访问方案的另一因素。服务器130的当前状态被用于估算查询优化器165优化使用具体算法151的每个子方案需要的CPU时间量。例如,在服务器130空闲时可能无法使用可以在繁忙的服务器130上针对子方案确定最佳访问方案的算法。
而且,在一个实施例中,诸如151c的算法可并行地使用多于一个的CPU,从而执行针对确定访问方案要求的子任务,因此要求更少的全体总时间。但是,例如151a和151b的算法不能并行处理任何工作,并且要求单一CPU,这通常要求更多的全体总时间。
在一个实施例中,DBMS140包括存储调节器(未示出),从而分配存储器。存储调节器确定针对诸如查询优化的具体处理可用的存储器量。存储调节器典型地基于服务器的当前状态确定可用的存储器量。例如,在手持设备上可用的存储器量和CPU时间与在云端或具有大量存储器的虚拟服务器环境中可用的存储器量和CPU时间不同。然而,若服务器已经正在执行大量占用存储器的处理,仅有限量的存储器可对于新的查询优化处理是可用的。因此,取决于服务器130的类型和状态,查询优化器165可以选择不同的算法,从而优化相同的子方案。
在一个实施例中,可用的系统资源取决于多个因素。例如,不同的平台托管DBMS140具有不同的设置。在另一个实施例中,由于共享平台的其它应用程序可能消耗一些资源,DBMS140可用的资源可能变化。此外,即使DBMS140可用的资源保持不变,资源可随着DBMS140额外于确定访问方案和优化查询处理的并行请求的数量变化。如本文所述,以上所列的因素影响可用存储器和CPU耗费。
最后,分析算法的固有特性,例如每个算法151优化子方案要求的存储器量和CPU时间。
在一个实施例中,DBMS140使用调校处理来估算生成针对每个子方案的使用每个算法151的访问方案所要求的CPU时间。CPU时间被估算成“每单位工作的成本”。在一个实施例中,工作的单位是每个算法151处理在使用优化处理的子方案中的一个节点所要求的CPU时间。调校处理取决于托管DBMS140的硬件。为了估算针对每个算法151的每单元工作的成本,调校处理执行具有预限定工作负载单元的查询。调校处理执行具有每个算法151的查询,且针对每个算法计算执行时间。该执行时间由预限定工作负载单元数量划分。因此,针对每个算法151的每单位工作的成本被确定为对CPU时间的测量。调校处理也计算针对不同类型的查询的每单位工作成本,从而确定针对不同查询要求的CPU时间的更好近似。
可通过使用存储表估算每个算法151确定访问方案要求的存储器。使用存储估算针对例如151b和151c的算法存储器。存储表的每条记录表示可能被用于确定针对子方案的访问方案的被保存的部分访问方案。例如,在一个实施例中,算法151a保存部分访问方案成本,其是针对量词的子组的最好的成本估算。因此,在一个实施例中,针对具有N量词的子方案,算法151需要等于2^N*大小的最大存储器空间(最好的成本结构)。
在选择针对子方案生成最佳访问方案的算法之前,由查询优化器165针对每个算法151计算上述因素。本领域技术人员将理解,以示例且非限制的方式给出这些因素,且当查询优化器165选择算法时可考虑其它因素。
在编译器164中的代码生成器(未示出)将由查询优化器165选择的访问方案转换成可执行的形式。通过使用访问方法168由执行单元166执行访问方案。
2.查询优化处理
图2的流程图示出了查询优化器165的示例性实施例。
在一个实施例中,查询优化器165可被操作为,选择一个或多个算法,从而优化查询。
在步骤210,查询优化器165接收标准化查询。
在步骤220,查询优化器165将标准化查询分割成一个或多个查询块。每个查询块包括查询的原子部分。查询优化器165基于每个查询块的分组部分创建针对每个查询块子方案(“子方案S”)。然后,查询优化器165确定初始访问方案和相应的算法151,从而在步骤230至260中优化子方案。
在步骤230中,针对子方案S实施预优化阶段I。图3是示出预优化阶段I步骤230的示例性实施例。
当查询优化器针对子方案S构建最大优化构造块时,预优化阶段I在步骤310开始。
在一个实施例中,在步骤320,通过使用优化建造块和代价小的算法,查询优化器165生成初始访问方案,例如在没有记忆左深树访问方案的情况下的返回算法151a。在一个实施方式中,代价小的算法要求较少的系统资源和少量的时间来生成初始访问方案。然而,本领域技术人员将理解,可使用其它代价小的算法。在另一个实施例中,代价小的列举算法为启发式算法,其基于查询的原始语法构建初始访问方案。
在一个实施例中,可以多个不同的算法设置实施在没有记忆情况下的返回算法。算法设置控制生成访问方案的代价小的算法要求的资源量和时间量。在步骤320,算法设置被设置成快速生成访问方案,或在确定第一完整访问方案之后终止在没有记忆情况下的返回算法。
在一个实施例中,在步骤320中,在没有记忆情况下的返回算法可以总是被用于针对子方案(S)(和针对任何其它子方案)生成使用最小的资源量的初始访问方案P0(S)。
在步骤330,查询优化器165通过使用如上所述的存储调节器和CPU利用率,确定DBMS140的当前状态,例如可用的存储器150。在一个实施例中,可在优化阶段I230处理期间在步骤340前的任何点处执行步骤330。
在步骤340,如在步骤330中描述的,在给定服务器130的当前状态情况下,查询优化器165确定执行子方案S的初始访问方案P0(S)的估算成本:在一个实施例中,用于执行子方案S的最大估算成本(max_cost(s))为执行初始访问方案P0(S)的成本或成本(P0(S)),因为由查询优化器165选择的访问方案可能仅是如在优化阶段I中确定的初始访问方案P0(S)一样高代价。
在一个实施例中,执行访问方案的成本包括估算的存储器利用率和CPU时间。如上所述地,通过分析子方案S的特性和在步骤320中使用的算法的特征,确定执行访问方案的成本。
返回图2,在步骤240,查询优化器165确定由预优化阶段I步骤230针对子方案S生成的访问方案是否是成本有效的访问方案。查询优化器165将在步骤340中确定的针对子方案S执行访问方案的估算成本max_cost(s)与用于执行子方案S的预定的阈值成本进行比较。以微秒测量执行访问方案的成本和预定成本。在一个实施例中,执行子方案S的成本包括CPU时间的I/O接口的成本。
若用于执行在步骤340中确定的子方案S的成本小于阈值成本,则在步骤250选择步骤320的代价小的算法。若在步骤250选择步骤320的代价小的算法,则查询优化器165忽略预优化阶段II步骤260,其包括其它优化技术,例如物化视图匹配、子查询优化、一元运算等,且进行至步骤270。
在步骤270,查询优化器165通过使用在步骤250或步骤260决定的所选择的检索空间生成算法来优化子方案S。在一个实施例中,若选择代价小的算法,则算法设置可被设置用于代价小的算法,从而完成针对整个子方案S生成访问方案。查询优化器使用代码生成器(未在图1中示出),从而将步骤320的访问方案转换成可执行形式。通过使用访问方法168,由执行单元166执行访问方案的可执行形式。
在步骤280,查询优化器165确定是否存在在要求访问方案的步骤220中被创建的其它子方案。若存在其它子方案,查询优化器165重复步骤230至270,从而针对下一个子方案确定访问方案。
若没有额外的子方案要求访问方案,则查询优化器165进行步骤290。在步骤290,针对整个查询的优化处理完成。
返回步骤240,若在步骤340中确定的用于执行子方案S的成本大于阈值成本,则查询优化器165试图确认代价最大的算法是否可生成针对子算法S的访问方案。在此情况下,查询优化器165进行步骤260的预优化阶段II处理。预优化阶段II处理260包括相对高代价的优化技术,其被用于找到针对子方案的访问方案,例如物化视图匹配,子查询优化,一元运算符的基于成本的优化,使用多索引扫描的基于成本的优化,并行运算符操作器的基于成本的优化,以及本领域技术人员已知的其它优化技术。
注意,在步骤240中是否使用步骤320的代价小的算法的决定取决于服务器130的当前状态。因此,可在一个实例中选择代价小的算法,从而优化在不具有大量存储器的手持设备上对服务器130的查询,而不是对具有大量存储器、并行行处理器和其它资源的虚拟服务器130的查询。
图4为示出预优化阶段II步骤260的示例性实施例的流程图。
在一个实施例中,预优化阶段II步骤260在步骤410开始。在步骤410,查询优化器165创建预优化构造块,从而执行针对子方案S的基于成本的优化,例如视图匹配,子查询优化,一元运算符等。在此列举的基于成本优化方法的列表不是穷举的,且本领域技术人员将理解,可以使用其它基于成本的优化方法。
在步骤420,查询优化器165生成针对子方案S的超图。本领域技术人员将理解,可通过在子方案S简单无向图表上执行简化算法来生成针对子方案S的超图。
在步骤430,在一个实施例中,通过分析超图的代数性质来确定子方案S的复杂度。超图的特征,例如其形状及其尺寸表示针对如上所述的子方案S的检索空间的尺寸。
一旦查询优化器165确定了子方案S的复杂度,预优化阶段II步骤260进行步骤440。在步骤440,查询优化器165确定资源量,例如在算法151的池中的每个算法优化子方案S要求的存储器的量和CPU时间。在一个实施例中,确定是基于在步骤430中确定的超图的特性,子方案S中的量词节点的数量,必须被列举的子方案S中节点的数量,和上述通过使用调校处理和存储表分析被确定的每个算法151的固有性质。
在步骤450,查询优化器165确定DBMS140的可用资源,例如由存储调节器分配的可用存储器150和可用CPU时间。本领域技术人员将理解,步骤450可在预优化阶段II处理260期间在步骤460之前的任何点被完成。
在步骤460,查询优化器165从多个算法151中选择算法。通过这样的操作,查询优化器165通过来自算法151的池中的每个算法优化在步骤440中确定的子方案S要求的资源,分析可用于在步骤450中确定的优化处理的系统资源。例如,若服务器130具有足够的存储器150和CPU时间以满足来自算法151的池的所有算法的要求,查询优化器165将选择代价最大的算法,例如算法151c,从而优化子方案S。然而,在有足够的存储器以通过算法151a或151b而非151c优化子方案S的实施例中,查询优化器165将通过使用最少要求CPU时间的算法来优化子方案S。在一个实施例中,当服务器130繁忙,且存储器150缺乏时,查询优化器165将默认通过算法151a优化子方案S,该算法可以一直通过少量资源优化查询,即使算法151a在步骤240中被确定为代价太大。在步骤460,完成了预优化处理阶段II,且查询优化器165进行步骤270。在步骤270,查询优化器165通过在步骤460中针对子方案S或在步骤250选择的算法而生成访问方案。查询优化器165使用代码生成器(未在图1中示出),从而将访问方案转换成可执行形式。由执行单元166通过使用访问方法168执行访问方案的可执行形式。
在优化子方案S之后,如上所述的,查询优化器165进行步骤280。
3.示例性计算机系统实施方式
可由软件、固件、硬件、或其组合实施本发明所述的各个方面。图5示出示例性计算机系统500,在其中本发明所述的各方面或其部分可被实施为计算机可读代码。例如,由图2、图3和图4的流程图200、300和400所示的方法可在系统500中被实施。在该示例性性计算机系统500方面描述本发明的各实施例。在阅读本文后,相关领域技术人员将清楚如何通过使用其他计算机系统和/或计算机体系结构来实施本发明。
计算机系统500包括一个或多个处理器,例如处理器510。处理器510可是专用或通用处理器。处理器510被连接至通信基础设施520(例如,总线或网络)。
计算机系统500也包括主存储器530,优选随机存取存储器(RAM),且也可包括辅助存储器540。辅助存储器540可包括例如硬盘驱动器550,可移动存储驱动器560,和/或记忆棒。可移动存储驱动器560可包括软盘驱动器、磁带驱动器、光盘驱动器、闪存等。可移动存储驱动器560以已知的方式读取和/或写入可移动存储单元570。可移动存储单元570可包括软盘、磁带、光盘等,其由可移动存储驱动器560读写。如相关领域技术人员所理解的,可移动存储单元570包括计算机可用的存储介质,其具有存储在其中的计算机软件和/或数据。
在替选实施方式中,辅助存储器550可包括其它类似的装置,从而允许计算机程序或其它指令被加载到计算机系统500内。这样的装置可包括例如可移动存储单元570和接口520。这样的装置的实施例可包括:程序盒式存储器和盒式接口(例如在视频游戏设备中看到的),可移动的存储器芯片(例如EPROM或PROM)和接合的插座,以及其它可移动存储单元570和接口520,其允许软件和数据从可移动存储单元570传送至计算机系统500。
计算机系统500可以还包括通信和网络接口580。通信接口580允许软件和数据在计算机系统500和外部设备之间传输。通信接口580可包括调制解调器、通讯端口、PCMCIA插槽和卡等。软件和数据通过通信接口580以信号形式传输,其可以是电、电磁、光、或其它能够由通信接口580接收的信号的形式。这些信号通过通信通道585被提供给通信接口580。通信通道585携载信号,且可通过使用金属线或电缆、光纤、电话线、蜂窝电话链路、RF链路或其它通信通道而实施。
网络接口580允许计算机系统500通过通信网络或诸如LAN、WAN互联网等的介质通信。网络接口580可通过有线或无线连接与远程位置或网络相连接。
在本文中,术语“计算机程序介质”和“计算机可用介质”通常指的是诸如可移动存储单元570、可移动存储驱动器560以及安装在硬盘驱动器550中的硬盘的介质。在通信通道585上携载的信号也可实现在此所述的逻辑。计算机程序介质和计算机可用介质也指存储器,例如主存储器530和辅助存储器540,其可以存储器半导体(例如DRAM等)。这些计算机程序制品为用于给计算机系统500提供软件的措施。
计算机程序(也称为计算机控制逻辑)被存储在主存储器530和/或辅助存储器540中。计算机程序也可通过通信接口580被接收。这样的计算机程序当被执行时使得计算机系统500可以实施在此所讨论的本发明。具体地,当执行计算机程序时使得处理器510可以实施如上所述的图2、图3和图4所示的流程图200、300和400。因此,这样的计算机程序表示计算机系统500的控制器。在使用软件实施本发明时,软件可被存储在计算机程序制品中,且通过使用可移动存储驱动器560、接口520、硬盘驱动器550或通信接口580而被加载入计算机系统500。
计算机系统500可以还包括输入/输出/显示设备590,例如键盘、监视器、指示设备等。
本发明也指向包括存储在任何计算机可用介质上的计算机程序制品。这样的软件当在一个或多个数据处理设备中被执行时,导致数据处理设备如在此所描述地运行。本发明的实施例采用现在或将来已知的任何计算机可用或可读介质。计算机可读介质的示例包括但不限制于主存储装置(例如,任何类型的随机存取存储器)、辅助存储设备(例如,硬盘驱动器、软盘、CD ROM、压缩磁盘、磁带、磁性存储设备、光学存储设备、MEMS、纳米技术存储设备等)、以及通信介质(例如,有线和无线通信网络、局域网、广域网、互联网等)。
本发明可与非在此描述的那些软件、硬件和/或操作系统实现一起工作。可使用任何适合执行在此所述的功能的软件、硬件和操作系统实现。
4.结论
应理解,详细的描述部分而非总结和摘要部分旨在用于解释权利要求书。总结和摘要部分可阐述发明人关注的一个或多个但不是所有的本发明的所有示例性实施例,且因此不旨在以任何方式限制本发明和所附权利要求。
上文中借助于示出其具体功能和关系的功能建造块描述了本发明。在此任意限定的这些功能建造块的分界是为了方便描述。只要合适地实施其具体功能和关系,则可限定替选的边界。
具体实施例的上述描述将充分揭示本发明的一般性质,使得本领域技术人员基于在此呈现的教义和指导通过利用本领域内的知识在没有过多经验的情况下和在不脱离本发明的一般概念的情况下可改变和/或调整各种应用,例如具体实施例。因此,这样的调整和改变在所公开的实施例的等效的意思和范围内。应理解,在此的措辞和术语是用于描述而非限制的目的,使得本说明书的措辞和术语可以根据教义和指导被技工所理解。
本发明的宽度和范围不应被任何上述的示例性实施例限制,而应仅根据权利要求书和其等效而被限定。
在本申请中的权利要求不同于母案申请或其它相关申请的权利要求。因此,申请人撤回在本申请中的和有关母案申请或任何在先申请中的任何权利要求范围的放弃权项。因此,建议审查员避免可能需要再审查的任何这样的放弃权项和参考文献。此外,也提醒审查员在本申请中的放弃权项不应被曲解或比对母案申请。
Claims (14)
1.一种用于优化针对查询的检索的方法,其包括:
针对子方案构建至少一个优化块;
针对使用代价小的算法执行所述子方案,确定最大估算成本;
当所述最大估算成本小于所述子方案的阈值成本时,选择代价小的算法;
当所述最大估算成本大于所述子方案的阈值成本时,
通过在子方案简单无向图表上执行简化算法来生成针对子方案的超图;
通过分析超图的代数性质确定该子方案的复杂度;
从检索空间生成算法池中确定每个算法优化子方案所要求的资源量,从而确定每个算法的特征;
基于该子方案的复杂度和每个算法的特征,从所述检索空间生成算法池中选择算法;以及
通过所选择的算法生成针对子方案的访问方案,以优化针对查询的检索。
2.如权利要求1所述的方法,其还包括:
确定服务器的当前状态;以及
其中,所述选择是基于所述服务器的所述当前状态进行的。
3.如权利要求1所述的方法,其中,
所述代价小的算法包括下列算法中的至少一个:在没有记忆左深树访问方案的情况下的返回算法、在记忆左深树访问方案的情况下的返回算法、以及在密集树访问方案上的动态编程算法。
4.如权利要求1所述的方法,其中,
所述优化块包括查询的原子部分。
5.如权利要求1所述的方法,其中,来自所述检索空间生成算法池的至少一个算法将导致生成针对优化所述子方案的访问方案。
6.一种用于优化针对查询的检索的系统,其包括:
存储器;
处理器,可通信地连接到所述存储器;
存储在所述存储器中并在所述处理器中执行的预优化模块,其被配置为执行:
针对子方案构建至少一个优化块;
针对使用代价小的算法执行所述子方案,确定最大估算成本;
当所述最大估算成本小于所述子方案的阈值成本时,选择代价小的算法;
当所述最大估算成本大于所述子方案的阈值成本时,
通过在子方案简单无向图表上执行简化算法来生成针对子方案的超图;
通过分析超图的代数性质确定该子方案的复杂度;
从检索空间生成算法池中确定每个算法优化子方案所要求的资源量,从而确定每个算法的特征;以及
基于该子方案的复杂度和每个算法的特征,从检索空间生成算法池中选择算法;
存储在所述存储器中并在所述处理器中执行的优化模块,其被配置为通过所选择的算法生成针对子方案的访问方案,以优化针对查询的检索。
7.如权利要求6所述的系统,其中,所述预优化模块确定服务器的状态,且所述优化模块基于所述服务器的所述状态选择代价最小的算法。
8.如权利要求6所述的系统,其中,所述代价小的算法包括下列算法中的至少一个:在没有记忆左深树访问方案的情况下的返回算法、在记忆左深树访问方案的情况下的返回算法、以及在密集树访问方案上的动态编程算法。
9.如权利要求8所述的系统,其中,所述优化块包括查询的原子部分。
10.一种用于优化针对查询的检索的系统,该系统包括:
用于针对子方案构建至少一个优化块的装置;
用于针对使用代价小的算法执行所述子方案,确定最大估算成本的装置;
用于当所述最大估算成本小于所述子方案的阈值成本时,选择代价小的算法的装置;
用于当所述最大估算成本大于所述子方案的阈值成本时执行下列操作的装置:
通过在子方案简单无向图表上执行简化算法来生成针对子方案的超图;
通过分析超图的代数性质确定该子方案的复杂度;
从检索空间生成算法池中确定每个算法优化子方案所要求的资源量,从而确定每个算法的特征;
基于该子方案的复杂度和每个算法的特征,从检索空间生成算法池中选择算法;以及
用于通过所选择的算法生成针对子方案的访问方案,以优化针对查询的检索的装置。
11.如权利要求10所述的系统,其还包括:
用于确定服务器的当前状态的装置;以及
其中,所述选择是基于所述服务器的所述当前状态进行的。
12.如权利要求10所述的系统,其中,
所述代价小的算法包括下列算法中的至少一个:在没有记忆左深树访问方案的情况下的返回算法、在记忆左深树访问方案的情况下的返回算法、以及在密集树访问方案上的动态编程算法。
13.如权利要求12所述的系统,其中,
所述优化块包括查询的原子部分。
14.如权利要求10所述的系统,其中,来自所述算法池的至少一个算法将导致生成用于优化所述子方案的访问方案。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/951,628 | 2010-11-22 | ||
US12/951,628 US8429151B2 (en) | 2010-11-22 | 2010-11-22 | Highly adaptable query optimizer search space generation process |
PCT/US2011/059552 WO2012071162A1 (en) | 2010-11-22 | 2011-11-07 | Highly adaptable query optimizer search space generation process |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103299299A CN103299299A (zh) | 2013-09-11 |
CN103299299B true CN103299299B (zh) | 2017-04-05 |
Family
ID=46065324
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180056140.5A Active CN103299299B (zh) | 2010-11-22 | 2011-11-07 | 高适应性查询优化器检索空间生成方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8429151B2 (zh) |
EP (1) | EP2643777B1 (zh) |
CN (1) | CN103299299B (zh) |
WO (1) | WO2012071162A1 (zh) |
Families Citing this family (92)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5236086B2 (ja) | 2010-01-28 | 2013-07-17 | 株式会社日立製作所 | 増設/減設する記憶容量を計算する管理システム |
CA2716436A1 (en) | 2010-03-01 | 2011-09-01 | Dundas Data Visualization, Inc. | Systems and methods for generating data visualization dashboards |
US20120089902A1 (en) | 2010-10-07 | 2012-04-12 | Dundas Data Visualization, Inc. | Systems and methods for dashboard image generation |
US10997211B2 (en) | 2010-12-23 | 2021-05-04 | Mongodb, Inc. | Systems and methods for database zone sharding and API integration |
US10698775B2 (en) | 2016-05-31 | 2020-06-30 | Mongodb, Inc. | Method and apparatus for reading and writing committed data |
US8996463B2 (en) * | 2012-07-26 | 2015-03-31 | Mongodb, Inc. | Aggregation framework system architecture and method |
US10346430B2 (en) | 2010-12-23 | 2019-07-09 | Mongodb, Inc. | System and method for determining consensus within a distributed database |
US10614098B2 (en) | 2010-12-23 | 2020-04-07 | Mongodb, Inc. | System and method for determining consensus within a distributed database |
US10977277B2 (en) | 2010-12-23 | 2021-04-13 | Mongodb, Inc. | Systems and methods for database zone sharding and API integration |
US8572031B2 (en) | 2010-12-23 | 2013-10-29 | Mongodb, Inc. | Method and apparatus for maintaining replica sets |
US9805108B2 (en) | 2010-12-23 | 2017-10-31 | Mongodb, Inc. | Large distributed database clustering systems and methods |
US10740353B2 (en) | 2010-12-23 | 2020-08-11 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US11544288B2 (en) | 2010-12-23 | 2023-01-03 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US10262050B2 (en) | 2015-09-25 | 2019-04-16 | Mongodb, Inc. | Distributed database systems and methods with pluggable storage engines |
US10713280B2 (en) | 2010-12-23 | 2020-07-14 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US11615115B2 (en) | 2010-12-23 | 2023-03-28 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US9740762B2 (en) | 2011-04-01 | 2017-08-22 | Mongodb, Inc. | System and method for optimizing data migration in a partitioned database |
CA2737148A1 (en) | 2011-01-06 | 2012-07-06 | Dundas Data Visualization, Inc. | Methods and systems for providing a discussion thread to key performance indicator information |
US8949832B2 (en) * | 2011-08-29 | 2015-02-03 | Novell, Inc. | Techniques for workload toxic mapping |
US20130081109A1 (en) | 2011-09-23 | 2013-03-28 | Corent Technology, Inc. | Multi-Tenant Agile Database Connector |
US8938444B2 (en) * | 2011-12-29 | 2015-01-20 | Teradata Us, Inc. | Techniques for external application-directed data partitioning in data exporting from a database management system |
US11403317B2 (en) | 2012-07-26 | 2022-08-02 | Mongodb, Inc. | Aggregation framework system architecture and method |
US10872095B2 (en) | 2012-07-26 | 2020-12-22 | Mongodb, Inc. | Aggregation framework system architecture and method |
US11544284B2 (en) | 2012-07-26 | 2023-01-03 | Mongodb, Inc. | Aggregation framework system architecture and method |
US9229983B2 (en) | 2012-11-30 | 2016-01-05 | Amazon Technologies, Inc. | System-wide query optimization |
US9298771B2 (en) * | 2013-01-30 | 2016-03-29 | Ias Solutions, Inc. | Resource estimation for a query optimization process |
CN103678589B (zh) * | 2013-12-12 | 2017-02-01 | 用友网络科技股份有限公司 | 一种基于等价类的数据库内核查询优化方法 |
US9633120B2 (en) * | 2014-01-29 | 2017-04-25 | International Business Machines Corporation | Continuously blocking query result data for a remote query |
US10162855B2 (en) | 2014-06-09 | 2018-12-25 | Dundas Data Visualization, Inc. | Systems and methods for optimizing data analysis |
CN105224566B (zh) * | 2014-06-25 | 2019-03-01 | 国际商业机器公司 | 在关系数据库上支持命令式图形查询的方法和系统 |
US10496669B2 (en) | 2015-07-02 | 2019-12-03 | Mongodb, Inc. | System and method for augmenting consensus election in a distributed database |
US10673623B2 (en) | 2015-09-25 | 2020-06-02 | Mongodb, Inc. | Systems and methods for hierarchical key management in encrypted distributed databases |
US10846411B2 (en) | 2015-09-25 | 2020-11-24 | Mongodb, Inc. | Distributed database systems and methods with encrypted storage engines |
US11074254B2 (en) | 2016-03-23 | 2021-07-27 | International Business Machines Corporation | Performance management using thresholds for queries of a service for a database as a service |
US10776220B2 (en) | 2016-06-27 | 2020-09-15 | Mongodb, Inc. | Systems and methods for monitoring distributed database deployments |
US10726009B2 (en) * | 2016-09-26 | 2020-07-28 | Splunk Inc. | Query processing using query-resource usage and node utilization data |
US11243963B2 (en) | 2016-09-26 | 2022-02-08 | Splunk Inc. | Distributing partial results to worker nodes from an external data system |
US11620336B1 (en) | 2016-09-26 | 2023-04-04 | Splunk Inc. | Managing and storing buckets to a remote shared storage system based on a collective bucket size |
US10984044B1 (en) | 2016-09-26 | 2021-04-20 | Splunk Inc. | Identifying buckets for query execution using a catalog of buckets stored in a remote shared storage system |
US11222066B1 (en) | 2016-09-26 | 2022-01-11 | Splunk Inc. | Processing data using containerized state-free indexing nodes in a containerized scalable environment |
US11163758B2 (en) | 2016-09-26 | 2021-11-02 | Splunk Inc. | External dataset capability compensation |
US11106734B1 (en) | 2016-09-26 | 2021-08-31 | Splunk Inc. | Query execution using containerized state-free search nodes in a containerized scalable environment |
US11663227B2 (en) | 2016-09-26 | 2023-05-30 | Splunk Inc. | Generating a subquery for a distinct data intake and query system |
US11023463B2 (en) | 2016-09-26 | 2021-06-01 | Splunk Inc. | Converting and modifying a subquery for an external data system |
US11615104B2 (en) | 2016-09-26 | 2023-03-28 | Splunk Inc. | Subquery generation based on a data ingest estimate of an external data system |
US11567993B1 (en) | 2016-09-26 | 2023-01-31 | Splunk Inc. | Copying buckets from a remote shared storage system to memory associated with a search node for query execution |
US11250056B1 (en) | 2016-09-26 | 2022-02-15 | Splunk Inc. | Updating a location marker of an ingestion buffer based on storing buckets in a shared storage system |
US10956415B2 (en) | 2016-09-26 | 2021-03-23 | Splunk Inc. | Generating a subquery for an external data system using a configuration file |
US11604795B2 (en) | 2016-09-26 | 2023-03-14 | Splunk Inc. | Distributing partial results from an external data system between worker nodes |
US11232100B2 (en) | 2016-09-26 | 2022-01-25 | Splunk Inc. | Resource allocation for multiple datasets |
US11442935B2 (en) | 2016-09-26 | 2022-09-13 | Splunk Inc. | Determining a record generation estimate of a processing task |
US11580107B2 (en) | 2016-09-26 | 2023-02-14 | Splunk Inc. | Bucket data distribution for exporting data to worker nodes |
US11294941B1 (en) | 2016-09-26 | 2022-04-05 | Splunk Inc. | Message-based data ingestion to a data intake and query system |
US11860940B1 (en) | 2016-09-26 | 2024-01-02 | Splunk Inc. | Identifying buckets for query execution using a catalog of buckets |
US11593377B2 (en) | 2016-09-26 | 2023-02-28 | Splunk Inc. | Assigning processing tasks in a data intake and query system |
US10353965B2 (en) | 2016-09-26 | 2019-07-16 | Splunk Inc. | Data fabric service system architecture |
US11003714B1 (en) | 2016-09-26 | 2021-05-11 | Splunk Inc. | Search node and bucket identification using a search node catalog and a data store catalog |
US12013895B2 (en) | 2016-09-26 | 2024-06-18 | Splunk Inc. | Processing data using containerized nodes in a containerized scalable environment |
US20180089324A1 (en) | 2016-09-26 | 2018-03-29 | Splunk Inc. | Dynamic resource allocation for real-time search |
US11126632B2 (en) | 2016-09-26 | 2021-09-21 | Splunk Inc. | Subquery generation based on search configuration data from an external data system |
US11550847B1 (en) | 2016-09-26 | 2023-01-10 | Splunk Inc. | Hashing bucket identifiers to identify search nodes for efficient query execution |
US10977260B2 (en) | 2016-09-26 | 2021-04-13 | Splunk Inc. | Task distribution in an execution node of a distributed execution environment |
US10776355B1 (en) | 2016-09-26 | 2020-09-15 | Splunk Inc. | Managing, storing, and caching query results and partial query results for combination with additional query results |
US11562023B1 (en) | 2016-09-26 | 2023-01-24 | Splunk Inc. | Merging buckets in a data intake and query system |
US11461334B2 (en) | 2016-09-26 | 2022-10-04 | Splunk Inc. | Data conditioning for dataset destination |
US11599541B2 (en) | 2016-09-26 | 2023-03-07 | Splunk Inc. | Determining records generated by a processing task of a query |
US11321321B2 (en) | 2016-09-26 | 2022-05-03 | Splunk Inc. | Record expansion and reduction based on a processing task in a data intake and query system |
US11416528B2 (en) | 2016-09-26 | 2022-08-16 | Splunk Inc. | Query acceleration data store |
US11874691B1 (en) | 2016-09-26 | 2024-01-16 | Splunk Inc. | Managing efficient query execution including mapping of buckets to search nodes |
US11586627B2 (en) | 2016-09-26 | 2023-02-21 | Splunk Inc. | Partitioning and reducing records at ingest of a worker node |
US11314753B2 (en) | 2016-09-26 | 2022-04-26 | Splunk Inc. | Execution of a query received from a data intake and query system |
US11269939B1 (en) | 2016-09-26 | 2022-03-08 | Splunk Inc. | Iterative message-based data processing including streaming analytics |
US11281706B2 (en) | 2016-09-26 | 2022-03-22 | Splunk Inc. | Multi-layer partition allocation for query execution |
CN106970837B (zh) * | 2017-03-29 | 2020-05-26 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
US10866868B2 (en) | 2017-06-20 | 2020-12-15 | Mongodb, Inc. | Systems and methods for optimization of database operations |
US11989194B2 (en) | 2017-07-31 | 2024-05-21 | Splunk Inc. | Addressing memory limits for partition tracking among worker nodes |
US11921672B2 (en) | 2017-07-31 | 2024-03-05 | Splunk Inc. | Query execution at a remote heterogeneous data store of a data fabric service |
US10896182B2 (en) | 2017-09-25 | 2021-01-19 | Splunk Inc. | Multi-partitioning determination for combination operations |
CN108664560A (zh) * | 2018-04-09 | 2018-10-16 | 宁波诺信睿聚投资有限责任公司 | 数据查询方法、装置、计算机设备及计算机可读存储介质 |
US11334543B1 (en) | 2018-04-30 | 2022-05-17 | Splunk Inc. | Scalable bucket merging for a data intake and query system |
US10810202B2 (en) * | 2018-06-14 | 2020-10-20 | Microsoft Technology Licensing, Llc | Execution plan stitching |
US11256696B2 (en) * | 2018-10-15 | 2022-02-22 | Ocient Holdings LLC | Data set compression within a database system |
CN109408538B (zh) * | 2018-10-22 | 2021-06-22 | 武汉达梦数据库有限公司 | 云平台中自动发放云组件实现大规模融合查询方法及系统 |
CN109951468B (zh) * | 2019-03-12 | 2020-08-28 | 清华大学 | 一种基于f值优化的网络攻击检测方法与系统 |
WO2020220216A1 (en) | 2019-04-29 | 2020-11-05 | Splunk Inc. | Search time estimate in data intake and query system |
US11715051B1 (en) | 2019-04-30 | 2023-08-01 | Splunk Inc. | Service provider instance recommendations using machine-learned classifications and reconciliation |
US11704316B2 (en) * | 2019-05-31 | 2023-07-18 | Qubole, Inc. | Systems and methods for determining peak memory requirements in SQL processing engines with concurrent subtasks |
US11494380B2 (en) | 2019-10-18 | 2022-11-08 | Splunk Inc. | Management of distributed computing framework components in a data fabric service system |
US11922222B1 (en) | 2020-01-30 | 2024-03-05 | Splunk Inc. | Generating a modified component for a data intake and query system using an isolated execution environment image |
US11704313B1 (en) | 2020-10-19 | 2023-07-18 | Splunk Inc. | Parallel branch operation using intermediary nodes |
US11782918B2 (en) * | 2020-12-11 | 2023-10-10 | International Business Machines Corporation | Selecting access flow path in complex queries |
US20220300513A1 (en) * | 2021-03-19 | 2022-09-22 | International Business Machines Corporation | Asynchronous query optimization using spare hosts |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6754652B2 (en) * | 2002-03-29 | 2004-06-22 | International Business Machines Corporation | Database query optimizer framework with dynamic strategy dispatch |
US7617179B2 (en) * | 2002-06-29 | 2009-11-10 | Ianywhere Solutions, Inc. | System and methodology for cost-based subquery optimization using a left-deep tree join enumeration algorithm |
US6807546B2 (en) * | 2002-08-12 | 2004-10-19 | Sybase, Inc. | Database system with methodology for distributing query optimization effort over large search spaces |
US7146352B2 (en) | 2003-06-23 | 2006-12-05 | Microsoft Corporation | Query optimizer system and method |
US7383247B2 (en) * | 2005-08-29 | 2008-06-03 | International Business Machines Corporation | Query routing of federated information systems for fast response time, load balance, availability, and reliability |
US7945562B2 (en) * | 2006-03-15 | 2011-05-17 | Oracle International Corporation | Join predicate push-down optimizations |
US20070239673A1 (en) | 2006-04-05 | 2007-10-11 | Barsness Eric L | Removing nodes from a query tree based on a result set |
US7970757B2 (en) | 2008-03-17 | 2011-06-28 | International Business Machines Corporation | Computer program product for database query optimization |
US9449045B2 (en) * | 2011-04-08 | 2016-09-20 | Sybase, Inc. | System and method for enhanced query optimizer search space ordering |
-
2010
- 2010-11-22 US US12/951,628 patent/US8429151B2/en active Active
-
2011
- 2011-11-07 CN CN201180056140.5A patent/CN103299299B/zh active Active
- 2011-11-07 WO PCT/US2011/059552 patent/WO2012071162A1/en active Application Filing
- 2011-11-07 EP EP11843584.1A patent/EP2643777B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP2643777A1 (en) | 2013-10-02 |
WO2012071162A1 (en) | 2012-05-31 |
EP2643777B1 (en) | 2019-03-27 |
EP2643777A4 (en) | 2017-08-09 |
CN103299299A (zh) | 2013-09-11 |
US8429151B2 (en) | 2013-04-23 |
US20120130988A1 (en) | 2012-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103299299B (zh) | 高适应性查询优化器检索空间生成方法 | |
US10642832B1 (en) | Reducing the domain of a subquery by retrieving constraints from the outer query | |
JP6117378B2 (ja) | 分散型データベースクエリ・エンジン用のシステムおよび方法 | |
US8874547B2 (en) | Parameter-sensitive plans | |
US9298771B2 (en) | Resource estimation for a query optimization process | |
US9489310B2 (en) | System, method and computer-readable medium for spool cache management | |
US20060041599A1 (en) | Database management system and method for query process for the same | |
EP3746910A1 (en) | Query optimizer constraints | |
US7831593B2 (en) | Selective automatic refreshing of stored execution plans | |
KR20180035035A (ko) | 데이터 엔진에서의 질의 최적화 방법 및 장치 | |
US20110022585A1 (en) | Multi-partition query governor in a computer database system | |
JP6172649B2 (ja) | 情報処理装置、プログラム、及び、情報処理方法 | |
CN111581234B (zh) | Rac多节点数据库查询方法、装置及系统 | |
US6980981B2 (en) | Method, system, and program for selecting a join order for tables subject to a join operation | |
US20130191672A1 (en) | User Generated Data Center Power Savings | |
Sharma et al. | Stochastic Analysis of DSS Queries for a Distributed Database Design | |
Li et al. | Data balancing-based intermediate data partitioning and check point-based cache recovery in Spark environment | |
Cao et al. | Revisiting Query Performance in GPU Database Systems | |
JP5084750B2 (ja) | データベース・システムにおける統計ビューの管理 | |
KR20180104498A (ko) | 질의 처리 방법 및 장치 | |
Hsiao et al. | Reducing mapreduce abstraction costs for text-centric applications | |
JP2001331463A (ja) | データベース構築方法及びそのプログラムを記録した記録媒体 | |
US8185697B1 (en) | Methods and systems for coherence protocol tuning | |
CN108369500A (zh) | 扩展字段专业化 | |
Wang | Optimizing Big Data Applications Using Hybrid Program Analysis (White Paper) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |