利用优化提示的查询调整转让专利

申请号 : CN202010270664.5

文献号 : CN111797116A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : M·S·纳那尔V·苏诺得D·杰恩K·乔杜里J·M·卡恩

申请人 : 埃森哲环球解决方案有限公司

摘要 :

本公开的实施例涉及利用优化提示的查询调整。设备可以标识针对数据库系统的查询,其中查询是用于优化的候选。设备可以根据用于执行查询的第一提示确定第一执行计划,并且根据用于执行查询的第二提示确定第二执行计划,其中第一执行计划与第一执行时间相关联并且第二执行计划与第二次执行时间相关联。设备可以选择第一执行计划或第二执行计划作为选择的执行计划。设备可以基于选择选择的执行计划来生成针对查询的简档,其中简档基于选择的执行计划。数据库系统可以根据简档来执行查询。

权利要求 :

1.一种方法,包括:

由设备标识针对数据库系统的查询,

其中所述查询是用于优化的候选;

由所述设备根据用于执行所述查询的第一提示确定第一执行计划,并且根据用于执行所述查询的第二提示确定第二执行计划,其中所述第一执行计划与第一执行时间相关联,并且所述第二执行计划与第二执行时间相关联;

由所述设备选择所述第一执行计划或所述第二执行计划作为选择的执行计划,其中当所述第一执行时间小于所述第二执行时间时,所述第一执行计划将被选择作为所述选择的执行计划,其中当所述第二执行时间小于所述第一执行时间时,所述第二执行计划将被选择作为所述选择的执行计划;以及由所述设备基于选择所述选择的执行计划生成针对所述查询的简档,其中所述简档基于所述选择的执行计划,其中所述数据库系统将根据所述简档来执行所述查询。

2.根据权利要求1所述的方法,其中所述查询在被标识为用于优化的所述候选之前,根据与初始执行时间相关联的初始执行计划而被执行,其中当所述初始执行时间满足阈值时,所述查询被标识为用于优化的所述候选。

3.根据权利要求1所述的方法,其中确定所述第一执行计划和所述第二执行计划包括:使用所述数据库系统的查询优化器来确定所述第一执行计划和所述第二执行计划。

4.根据权利要求1所述的方法,其中所述查询被表达为文本语句,其中确定所述第一执行计划和所述第二执行计划包括:用所述第一提示更改所述文本语句以获取第一更改后的查询,并且用所述第二提示更改所述文本语句以获取第二更改后的查询;以及基于处理所述第一更改后的查询来确定所述第一执行计划,以及基于处理所述第二更改后的查询来确定所述第二执行计划。

5.根据权利要求1所述的方法,还包括:确定与所述查询相关联的驱动表,

其中所述第一提示或所述第二提示与所述驱动表相关。

6.根据权利要求1所述的方法,还包括:确定与所述查询相关联的驱动表的一个或多个索引,其中所述第一提示或所述第二提示与所述一个或多个索引相关。

7.根据权利要求1所述的方法,其中根据以下中的一项或多项,所述第一提示提供第一引导以确定所述第一执行计划,并且所述第二提示提供第二引导以确定所述第二执行计划:要被返回的特定数目的行,

基于规则的优化,

在表联接次序中要首先被使用的特定表,要被使用于索引扫描的特定索引,

使用特定数目的处理器的并行处理,

要被使用作为嵌套循环联接操作的内部表的特定表,特定访问路径,或

要被使用于以特定排序方向的索引扫描的特定索引。

8.一种存储指令的非瞬态计算机可读介质,所述指令包括:一个或多个指令,所述一个或多个指令在由一个或多个处理器执行时,使所述一个或多个处理器:标识针对数据库系统的查询,

其中所述查询是用于优化的候选,

其中所述查询被表达为文本语句;

用第一提示更改所述文本语句以获取第一更改后的查询,并且用第二提示更改所述文本语句以获取第二更改后的查询;

基于处理所述第一更改后的查询来确定第一执行计划,并且基于处理所述第二更改后的查询来确定第二执行计划;

选择所述第一执行计划或所述第二执行计划作为选择的执行计划;

基于选择所述选择的执行计划,生成针对所述查询的简档,其中所述简档基于所述选择的执行计划;以及根据所述简档来执行所述查询。

9.根据权利要求8所述的非瞬态计算机可读介质,其中所述查询在被标识为用于优化的所述候选之前,根据与初始执行时间相关联的初始执行计划而被执行,其中当所述初始执行时间满足阈值时,所述查询被标识为用于优化的所述候选。

10.根据权利要求8所述的非瞬态计算机可读介质,其中所述一个或多个指令在由所述一个或多个处理器执行时,还使所述一个或多个处理器:将所述简档与所述查询相关联地存储,

其中使所述一个或多个处理器执行所述查询的所述一个或多个指令使所述一个或多个处理器:接收执行所述查询的指令;

获取所述简档;以及

根据所述简档来执行所述查询。

11.根据权利要求8所述的非瞬态计算机可读介质,其中使所述一个或多个处理器选择所述第一执行计划或所述第二执行计划作为所述选择的执行计划的所述一个或多个指令使所述一个或多个处理器:既不选择所述第一执行计划也不选择所述第二执行计划作为所述选择的执行计划;以及生成指示没有执行计划针对所述查询而被选择的通知。

12.根据权利要求8所述的非瞬态计算机可读介质,其中基于所述查询的存储位置,所述第一执行计划或所述第二执行计划被选择作为所述选择的执行计划。

13.根据权利要求8所述的非瞬态计算机可读介质,其中使所述一个或多个处理器选择所述第一执行计划或所述第二执行计划作为所述选择的执行计划的所述一个或多个指令使所述一个或多个处理器:基于与所述第一更改后的查询相关联的第一执行时间或成本,或者基于与所述第二更改后的查询相关联的第二执行时间或成本,选择所述第一执行计划或所述第二执行计划作为所述选择的执行计划。

14.根据权利要求8所述的非瞬态计算机可读介质,其中根据以下中的一项或多项,所述第一提示提供第一引导以确定所述第一执行计划,并且所述第二提示提供第二引导以确定所述第二执行计划:要被返回的特定数目的行,

基于规则的优化,

在表联接次序中要首先被使用的特定表,要被使用于索引扫描的特定索引,

使用特定数目的处理器的并行处理,

要被使用作为嵌套循环联接操作的内部表的特定表,特定访问路径,或

要被使用于以特定排序方向的索引扫描的特定索引。

15.一种设备,包括:

一个或多个存储器;以及

一个或多个处理器,通信地耦合到所述一个或多个存储器,用以:标识针对数据库系统的查询,

其中所述查询是用于优化的候选;

向所述数据库系统提供用于执行所述查询的第一提示和用于执行所述查询的第二提示,其中所述数据库系统将根据用于执行所述查询的所述第一提示确定第一执行计划,并且根据用于执行所述查询的所述第二提示确定第二执行计划,其中所述第一执行计划与第一执行时间相关联,并且所述第二执行计划与第二执行时间相关联;

选择所述第一执行计划或所述第二执行计划作为选择的执行计划,其中当所述第一执行时间小于所述第二执行时间时,所述第一执行计划将被选择作为所述选择的执行计划,其中当所述第二执行时间小于所述第一执行时间时,所述第二执行计划将被选择作为所述选择的执行计划;以及基于选择所述选择的执行计划,生成针对所述查询的简档,其中所述简档基于所述选择的执行计划,其中所述数据库系统将根据所述简档来执行所述查询。

16.根据权利要求15所述的设备,其中所述查询被表达为文本语句,其中所述一个或多个处理器还用以:

用所述第一提示更改所述文本语句以获取第一更改后的查询,并且用所述第二提示更改所述文本语句以获取第二更改后的查询,其中所述一个或多个处理器在提供所述第一提示和所述第二提示时用以:提供所述第一更改后的查询和所述第二更改后的查询。

17.根据权利要求15所述的设备,其中所述查询在被标识为用于优化的所述候选之前,由所述数据库系统根据与初始执行时间相关联的初始执行计划来执行,其中当所述第一执行时间小于所述初始执行时间和所述第二执行时间时,所述第一执行计划将被选择,其中当所述第二执行时间小于所述初始执行时间和所述第一执行时间时,所述第二执行计划将被选择。

18.根据权利要求15所述的设备,其中所述查询在被标识为用于优化的所述候选之前,由所述数据库系统根据与初始执行时间相关联的初始执行计划来执行,其中当所述初始执行时间满足第一阈值、所述查询是用于从所述数据库系统取回数据的请求、并且与应用有关的所述查询的执行次数满足第二阈值时,所述查询是用于优化的所述候选。

19.根据权利要求15所述的设备,其中所述第一提示和所述第二提示被包括在多个提示中,所述多个提示要被使用于确定多个执行计划。

20.根据权利要求15所述的设备,其中根据以下中的一项或多项,所述第一提示提供第一引导以确定所述第一执行计划,并且所述第二提示提供第二引导以确定所述第二执行计划:要被返回的特定数目的行,

基于规则的优化,

在表联接次序中要首先被使用的特定表,要被使用于索引扫描的特定索引,

使用特定数目的处理器的并行处理,

要被使用作为嵌套循环联接操作的内部表的特定表,特定访问路径,或

要被使用于以特定排序方向的索引扫描的特定索引。

说明书 :

利用优化提示的查询调整

技术领域

[0001] 本公开的实施例涉及数据库系统,并且更具体地涉及利用优化提示的查询调整。

背景技术

[0002] 查询优化是许多数据库系统的功能。数据库系统的查询优化器尝试通过考虑用于查询的多个可能执行计划来确定执行被提交给数据库系统的查询的高效方式。一些数据库系统允许用提示来引导查询优化器。

发明内容

[0003] 根据一些实现,一种方法可以包括由设备标识针对数据库系统的查询。该查询可以是用于优化的候选。该方法可以包括:由设备根据用于执行查询的第一提示确定第一执行计划,并且根据用于执行查询的第二提示确定第二执行计划。第一执行计划可以与第一执行时间相关联并且第二执行计划可以与第二执行时间相关联。该方法可以包括由设备选择第一执行计划或第二执行计划作为选择的执行计划。当第一执行时间小于第二执行时间时,第一执行计划可以被选择作为选择的执行计划。当第二执行时间小于第一执行时间时,第二执行计划可以被选择作为选择的执行计划。该方法可以包括由设备基于选择的执行计划来生成针对查询的简档。简档可以基于选择的执行计划。数据库系统可以根据简档来执行查询。
[0004] 根据一些实现,一种非瞬态计算机可读介质可以存储指令,该指令包括一个或多个指令,该一个或多个指令在由设备的一个或多个处理器执行时,使该一个或多个处理器标识针对数据库系统的查询。该查询可以是用于优化的候选,并且该查询可以被表达为文本语句。一个或多个指令可以使一个或多个处理器用第一提示来更改文本语句以获取第一更改后的查询,并且用第二提示更改文本语句以获取第二更改后的查询。一个或多个指令可以使一个或多个处理器基于处理第一更改后的查询来确定第一执行计划,并且基于处理第二更改后的查询来确定第二执行计划。一个或多个指令可以使一个或多个处理器选择第一执行计划或第二执行计划作为选择的执行计划,并且基于选择的执行计划来生成针对查询的简档。简档可以基于选择的执行计划。一个或多个指令可以使一个或多个处理器根据简档来执行查询。
[0005] 根据一些实现,一种设备可以包括一个或多个存储器,以及通信地耦合到一个或多个存储器的一个或多个处理器,以标识针对数据库系统的查询。该查询可以是用于优化的候选。一个或多个处理器可以向数据库系统提供用于执行查询的第一提示和用于执行查询的第二提示。数据库系统可以根据用于执行查询的第一提示确定第一执行计划,并且根据用于执行查询的第二提示确定第二执行计划。第一执行计划可以与第一执行时间相关联并且第二执行计划可以与第二执行时间相关联。一个或多个处理器可以选择第一执行计划或第二执行计划作为选择的执行计划。当第一执行时间小于第二执行时间时,第一执行计划可以被选择作为选择的执行计划。当第二执行时间小于第一执行时间时,第二执行计划可以被选择作为选择的执行计划。一个或多个处理器可以基于选择选择的执行计划来生成针对查询的简档。简档可以基于选择的执行计划。数据库系统可以根据简档来执行查询。

附图说明

[0006] 图1A-图1E是本文所描述的一个或多个示例实现的图。
[0007] 图2是在其中可以实现本文所描述的系统和/或方法的示例环境的图。
[0008] 图3是图2的一个或多个设备的示例组件的图。
[0009] 图4-图6是用于利用优化器提示进行查询调整的示例过程的流程图。

具体实施方式

[0010] 示例实现的以下详细描述参考附图。不同附图中的相同附图标记可以标识相同或相似的元件。
[0011] 针对数据库系统的查询(例如,结构化查询语言(SQL)查询)可以标识将从数据库系统的数据库获取的数据。但是,查询可能没有定义被数据库系统用来获取数据的任何步骤或任何算法。因此,数据库系统可以采用查询优化器来确定执行查询并获取查询中所标识的数据的高效方式。例如,查询优化器可以确定用于执行查询的多个执行计划,并从多个执行计划中选择特定执行计划(例如,最佳执行计划)。
[0012] 有时,由查询优化器确定的针对查询的特定执行计划并不高效,从而导致查询的执行缓慢以及包括该查询的应用的执行缓慢。在这种情况下,数据库管理员可以将该查询标识为执行缓慢,并尝试优化该查询。当存在数百、数千、数百万甚至更多的查询需要优化时,由数据库管理员执行的优化效率低下,容易出错,并且通常不切实际。此外,由数据库管理员执行的优化受到人的主观性引导,因此可能难以重复并且可能无法实现查询的最高效优化。
[0013] 本文所描述的一些实现提供了一种调整平台,该调整平台有助于针对数据库系统的查询的优化。调整平台可以标识作为用于优化的候选的查询。通过基于用于执行查询的提示来确定针对查询的执行计划,调整平台可以对查询执行调整过程。调整平台可以使用多个提示来确定针对查询的多个执行计划,以对查询执行调整过程。调整平台可以从多个执行计划中选择特定执行计划(例如,最佳执行计划),并且基于选择的特定执行计划来生成针对查询的简档。可以根据简档来执行查询。
[0014] 以这种方式,调整平台从查询优化中消除了人的主观性和浪费,从而提高了查询优化的速度和效率,并节省了关联的计算资源(例如,处理器资源、存储器资源等)。此外,调整平台还执行先前未被执行的操作,这些操作使查询优化更高效。因此,调整平台能够在几秒钟或几分钟内优化数百、数千或更多查询,从而节省计算资源,否则当由数据库管理员执行时这将需要数天或数周的时间。此外,调整平台为针对查询的许多不同的潜在执行计划提供高效、可重复且无偏的分析,从而确定针对查询的最佳执行计划。因此,节省了原本在根据不太优化的执行计划(例如,由数据库管理员确定的执行计划)来执行查询的情况下将会浪费的计算资源。
[0015] 尽管将根据数据库系统的示例描述以下描述,但是本文所描述的实现可以等同地应用于其他存储系统,诸如可以被查询的其他存储系统。
[0016] 图1A-图1E是本文所描述的一个或多个示例实现100的图。如图1A-图1E中所示,(多个)示例实现100可以包括调整平台。调整平台(例如,包括一个或多个服务器设备的调整平台)可以利用调整过程来优化针对数据库系统的查询。在一些实现中,调整过程可以由与调整平台相关联的一个或多个过程(例如,与调整平台的一个或多个计算资源相关联的一个或多个过程)来实现。
[0017] 在一些实现中,数据库系统可以与调整平台相关联。例如,数据库系统可以由调整平台的计算资源来实现。在一些实现中,数据库系统可以由与调整平台通信或以其他方式可访问调整平台的设备(例如,数据库服务器设备)来实现。
[0018] 数据库系统可以是维护关系数据库的关系数据库管理系统(RDMS)。在一些实现中,数据库系统可以使用SQL来查询和维护数据库。数据库系统可以采用查询处理器(也称为关系引擎),该查询处理器处理被提交给数据库系统的查询。查询处理器可以包括:查询优化器,其可以确定用于执行查询的执行计划;以及执行引擎,其可以执行由查询优化器所确定的执行计划,以响应于查询而从数据库获取结果。例如,查询优化器可以通过生成多个可能的执行计划(例如,基于访问方法的不同组合的多个可能的执行计划,诸如全表扫描或索引扫描;联接方法,诸如嵌套循环联接或哈希联接;联接次序;或查询变换)来确定用于执行查询的执行计划(例如,用以产生由查询所请求的结果的一组操作)。
[0019] 继续前面的示例,查询优化器可以分析每个可能的执行计划的成本,确定具有最低成本的特定执行计划,并将该特定执行计划传递给执行引擎。查询优化器(例如,使用数据库系统的数据库)可以基于执行计划的估计资源使用(例如,输入/输出性能、处理器使用和/或存储器使用)、针对查询要被返回的估计行数(例如基数)、与查询相关的数据集的大小、与查询相关的数据的分布和/或用于响应于查询而获取结果的访问路径来确定执行计划的成本。在一些实现中,数据库系统可以存储针对查询的特定执行计划,并且使用特定执行计划来执行查询。
[0020] 数据库可以是包括一个或多个表的关系数据库。表可以包括一个或多个列(例如,属性)和一个或多个行(例如,记录)。行可以由唯一键来标识。因此,可以使用第一表的行的唯一键来将第一表的行与第二表的行相关联。可以在表的一个或多个列上创建索引,以允许数据库系统找到与查询相匹配的记录(例如,包括在被索引的列上的过滤器的查询),而无需将查询与表的每一行进行比较。
[0021] 查询可以是对数据库系统的请求,以从数据库获取一个或多个结果(例如“SELECT(选择)”查询),将一个或多个记录插入到数据库中(例如“INSERT(插入)”查询),更新数据库中的一个或多个记录(例如“UPDATE(更新)”查询),和/或从数据库中删除一个或多个记录(例如“DELETE(删除)”查询)。在一些实现中,查询可以是SQL查询。因此,该查询可以被表达为文本语句(例如,“SELECT品牌、型号FROM车辆WHERE颜色=红色”)。该查询可以被包括在应用(例如,由调整平台实现的应用)中,并且在该应用的执行期间被提交给数据库系统。
[0022] 如图1A中所示,并且通过附图标记105,调整平台可以标识作为用于优化的候选的查询。在一些实现中,调整平台可以分析与先前由数据库系统执行的查询相关的历史日志数据(例如,由数据库系统维护的历史日志数据),以标识作为用于优化的候选的查询。在一些实现中,调整平台可以在测试环境内处理一个或多个查询(例如,应用中包括的一个或多个查询),以标识作为用于优化的候选的查询。在一些实现中,调整平台可以(例如,实时)监测查询的执行,以标识作为用于优化的候选的查询。
[0023] 在一些实现中,调整平台可以基于与查询相关联的资源使用(例如,存储器使用)和/或执行时间,将查询标识为用于优化的候选。例如,当与查询相关联的资源使用满足阈值和/或与查询相关联的执行时间满足阈值(例如,大于0.1秒、0.5秒、1秒等)时,调整平台可以将该查询标识为用于优化的候选。附加地或备选地,调整平台可以基于与查询相关联的数据库系统用户的身份将查询标识为用于优化的候选。例如,当数据库系统用户是系统管理员时,调整平台可以将查询标识为用于优化的候选。附加地或备选地,调整平台可以基于查询的类型将查询标识为用于优化的候选。例如,当查询是从数据库获取一个或多个结果的请求(例如,“SELECT”查询)时,调整平台可以将该查询标识为用于优化的候选。附加地或备选地,调整平台可以基于查询对应用的影响将查询标识为用于优化的候选。例如,当应用中的查询的执行次数满足阈值和/或查询执行相对于应用中的所有查询执行的百分比满足阈值时,调整平台可以将查询标识为用于优化的候选。
[0024] 在一些实现中,调整平台可以标识作为用于优化的候选的多个查询。可以将多个查询放置在队列中以供调整平台进行处理(例如,顺序处理或并发处理)。
[0025] 如图1B中所示,并且通过附图标记110,调整平台可以标识被标识为用于优化的候选的查询的细节(例如,元数据)。调整平台可以在执行调整过程时使用查询的细节,如下所述。在一些实现中,调整平台可以标识表达查询的文本语句(例如,“SELECT品牌、型号FROM车辆WHERE颜色=红色”)。附加地或备选地,调整平台可以标识查询中包括的一个或多个绑定变量(例如,在查询“SELECT品牌、型号FROM车辆WHERE颜色=:颜色”中,调整平台可以标识绑定变量“:颜色”)。
[0026] 如图1C中所示,并且通过附图标记115,调整平台可以分析被标识为用于优化的候选的查询。例如,调整平台可以分析查询以标识与查询相关的信息,该信息可以影响查询的执行。调整平台可以在执行调整过程时使用该信息,如下所述。在一些实现中,调整平台可以标识与查询相关联的驱动表(例如,数据库的驱动表)。调整平台可以通过在执行查询时标识联接到一个或多个第二表的第一表来标识驱动表(例如,与查询的过滤条件相关联的表,该过滤条件消除表中的行的最高百分比)。附加地或备选地,调整平台可以标识查询的一个或多个过滤器(例如,在查询“SELECT品牌、型号FROM车辆WHERE颜色=红色”中,调整平台可以标识过滤器“颜色=红色”)。调整平台可以分析被标识的驱动表和被标识的一个或多个过滤器,以确定一个或多个过滤器是否与驱动表的列(例如,属性)相关。调整平台还可以分析与驱动表相关的数据(例如,元数据),该数据被标识以确定由数据库系统索引的驱动表的列。
[0027] 如图1D中所示,并且通过附图标记120,调整平台可以通过确定针对查询的多个执行计划来执行调整过程。调整平台可以根据用于执行查询的多个提示来确定多个执行计划。例如,调整平台可以将提示应用于查询(例如,如上所述,利用查询的细节和与查询相关的信息),并根据该提示确定用于执行查询的执行计划。调整平台可以被配置有(例如,根据调整过程)要被应用于查询的多个提示(例如,在由调整平台维护的可以被周期性地更新的列表中)。
[0028] 在一些实现中,调整平台可以通过用提示更改与查询相关联的文本语句来将提示应用于查询(例如,“SELECT/*+FIRST_ROWS(10)*/品牌、型号FROM车辆WHERE颜色=红色”)以获取更改后的查询。例如,在标识了与查询相关联的文本语句之后,调整平台可以将提示插入到文本语句中。在一些实现中,调整平台可以用提示和绑定变量(例如,“SELECT/*+FIRST_ROWS(10)*/品牌、型号FROM车辆WHERE颜色=:颜色”)更改与查询相关联的文本语句以获取更改后的查询。例如,调整平台可以确定用于多个查询的文本语句(例如,其是用于优化的候选)具有相同的结构,但在特定过滤器上具有不同的文字值(例如,“SELECT品牌、型号FROM车辆WHERE颜色=红色”和“SELECT品牌、型号FROM车辆WHERE颜色=蓝色”)。继续前面的示例,调整平台可以为多个查询生成组合的文本语句,该组合的文本语句包括绑定变量来代替特定过滤器上的文字值,并用提示来更改组合的文本语句以获取更改后的查询。在一些实现中,调整平台可以用多个提示和/或多个绑定变量来更改与查询相关联的文本语句,以获取更改后的查询。
[0029] 在一些实现中,调整平台(例如,根据调整过程)可以根据提示确定执行计划。例如,调整平台(例如,利用数据库系统的查询优化器)可以基于处理包括提示的更改后的查询来确定执行计划。在一些实现中,调整平台可以向数据库系统提供提示(例如,经由更改后的查询),以允许数据库系统(例如,数据库系统的查询优化器)根据该提示来确定执行计划。在一些实现中,执行计划可以与执行时间和/或执行成本相关联。例如,在处理更改后的查询以确定执行计划时,调整平台(例如,使用数据库系统)可以确定与执行计划相关联的执行时间和/或执行成本。
[0030] 在一些实现中,执行时间可以是与处理更改后的查询相关联的实际执行时间,和/或成本可以是与处理更改后的查询相关联的实际成本。附加地或备选地,执行时间可以是基于执行计划的估计执行时间和/或成本可以是基于执行计划的估计成本。调整平台可以基于执行计划的估计资源使用(例如,输入/输出性能、处理器使用和/或存储器使用)、针对查询要被返回的估计行数(例如基数)、与查询相关的数据集的大小、与查询相关的数据的分布和/或用于响应于查询而获取结果的访问路径来确定估计的执行时间和/或估计的执行成本。
[0031] 在一些实现中,调整平台可以根据多个提示(例如,作为个体提示和/或以提示的组合而被应用于查询的多个提示)来确定针对查询的多个执行计划。例如,调整平台可以处理多个更改后的查询以确定多个执行计划。
[0032] 提示可以提供用于确定用于查询的执行计划的引导。例如,提示可以向数据库系统的查询优化器提供引导,以用于确定针对查询的执行计划。该引导可以影响查询优化器以特定的方式确定针对查询的执行计划。
[0033] 在一些实现中,提示可以提供引导以基于响应于查询而要被返回的特定数目的行来确定执行计划(例如,“/*+FIRST_ROWS(n)*/”)。换言之,该提示引导查询优化器确定针对查询的执行计划,该执行计划针对返回响应于该查询的前“n”数目的行而被优化。在一些实现中,多个提示可以指定不同数目的行(例如,第一提示可以指定要返回1行,第二提示可以指定要返回5行等)。
[0034] 在一些实现中,提示可以提供引导以根据基于规则的优化(例如,“/*+RULE*/”)来确定执行计划。换言之,该提示引导查询优化器确定针对查询的执行计划,该执行计划不是使用基于成本的优化(例如,基于执行计划的成本来确定执行优化的基于成本的优化,如上所述)而是使用基于规则的优化而被优化。根据基于规则的优化,查询优化器可以基于定义用于确定执行计划的参数的一组规则来确定针对查询的执行计划。
[0035] 在一些实现中,提示可以提供引导以基于特定的表联接次序来确定执行计划。换言之,该提示引导查询优化器确定针对特定表联接次序而被优化的针对查询的执行计划。特定的表联接次序可以涉及在表联接次序要被首先使用的一个或多个特定表(例如“/*+LEADING(table1table2)*/”)。在一些实现中,特定表可以是查询的驱动表(例如,如上所述,通过对查询进行分析而被标识的驱动表)。在一些实现中,多个提示可以指定在表联接次序中要被首先被使用的不同表(例如,通过对查询进行分析而被标识的不同表)(例如,第一提示可以指定在表联接次序中第一表首先被使用,第二提示可以指定在表联接次序中第二表首先被使用等)。
[0036] 在一些实现中,提示可以提供引导以基于要被使用于索引扫描的特定索引来确定执行计划(例如,“/*+INDEX(table index)*/”)。换言之,该提示引导查询优化器确定针对查询的执行计划,该执行计划针对在特定索引上执行索引扫描而被优化。在一些实现中,特定索引可以是查询的驱动表上的索引(例如,如上所述,通过对查询进行分析而被标识的索引)。在这种情况下,提示可以提供引导以基于特定驱动表和将被使用于索引扫描的特定索引(例如,“/*+LEADING(table)INDEX(table index)*/”)来确定执行计划。在一些实现中,多个提示可以指定要被使用于索引扫描的不同索引(例如,通过对查询进行分析而被标识的不同索引)(例如,第一提示可以指定第一索引要被用于索引扫描,第二提示可以指定第二索引要被用于索引扫描等)。
[0037] 在一些实现中,提示可以提供引导以基于使用特定并行程度(例如,“/*+PARALLEL(n)*/”)的查询的并行处理来确定执行计划。换言之,提示引导查询优化器确定针对查询的执行计划,该执行计划针对使用n数目的处理器来处理查询而被优化。在一些实现中,多个提示可以指定不同的并行程度(例如,第一提示可以指定2个处理器将处理查询,第二提示可以指定5个处理器将处理查询等)。
[0038] 在一些实现中,提示可以提供引导以基于特定表来确定执行计划,该特定表将被使用作为用于嵌套循环联接操作的内部表(例如,“/*+USE_NL(table)*/”)。换言之,提示引导查询优化器确定针对查询的执行计划,该执行计划针对使用嵌套循环联接操作而被联接到另一行源(例如,表)的特定表而被优化。在一些实现中,特定表可以是查询的驱动表(例如,如上所述,通过对查询进行分析而被标识的驱动表)。在一些实现中,多个提示可以指定将被使用作为用于嵌套循环联接操作的内部表的不同表(例如,通过对查询进行分析而被标识的不同表)(例如,第一提示可以指定第一表将是用于嵌套循环联接操作的内部表,第二提示可以指定第二表将是用于嵌套循环联接操作的内部表等)。
[0039] 在一些实现中,提示可以提供引导以根据用于响应于查询而获取结果的特定访问路径来确定执行计划。换言之,该提示引导查询优化器确定针对查询的执行计划,该执行计划针对使用特定访问路径而被优化。在一些实现中,特定访问路径可以是位图访问路径(例如,“/*+INDEX_COMBINE(table index1 index2)*/”)。附加地或备选地,特定访问路径可以是索引联接访问路径(例如,“/*+INDEX_JOIN(table index1 index2)*/”)。在一些实现中,特定访问路径可以与查询的驱动表上的一个或多个索引相关(例如,如上所述,通过对查询进行分析而被标识的一个或多个索引)。在一些实现中,多个提示可以指定用于特定访问路径的不同的索引(例如,通过对查询进行分析而被标识的不同索引)(例如,第一提示可以指定用于第一访问路径的一个或多个第一索引,第二提示可以指定用于第二访问路径的一个或多个第二索引等)。
[0040] 在一些实现中,提示可以提供引导以根据将被使用于以排序方向的索引扫描的特定索引来确定执行计划(例如,“/*+INDEX_DESC(table index)*/”或“/*+INDEX_ASC(table index)*/”)。换言之,该提示引导查询优化器确定针对查询的执行计划,该执行计划针对以特定排序方向对特定索引执行索引扫描而被优化(例如,针对以降序或升序扫描索引条目而被优化)。在一些实现中,特定索引可以是在查询的驱动表上的索引(例如,如上所述,通过对查询进行分析而被标识的索引)。在一些实现中,多个提示可以指定将被使用于以排序方向的索引扫描的不同索引(例如,通过对查询进行分析而被标识的不同索引)(例如,第一提示可以指定第一索引将被使用于降序的索引扫描,第二提示可以指定第二索引将被使用于降序的索引扫描等)。
[0041] 上面描述的提示是说明性的,而不旨在是详尽的列表。因此,调整平台可以在执行调整过程时采用本文未描述的一个或多个提示。
[0042] 如图1E中所示,并且通过附图标记125,调整平台(例如,根据调整过程)可以从多个执行计划(例如,由调整平台基于多个提示而确定的多个执行计划)中选择特定执行计划。例如,调整平台可以基于与特定执行计划相关联的执行时间、与特定执行计划相关联的成本、与查询相关联的结构、查询的存储位置等等来选择特定执行计划。在一些实现中,基于确定特定执行计划是多个执行计划之中的最佳执行计划,调整平台可以从多个执行计划中选择特定执行计划。
[0043] 在一些实现中,当在多个执行计划之中与特定执行计划相关联的执行时间或成本分别是最短时间或最低成本时,调整平台可以选择该特定执行计划。例如,第一执行计划可以与第一执行时间相关联,第二执行计划可以与第二执行时间相关联,并且当第一执行时间小于第二执行时间时,调整平台可以选择第一执行计划,或者当第二执行时间小于第一执行时间时,可以选择第二执行计划。作为另一示例,第一执行计划可以与第一成本相关联,并且第二执行计划可以与第二成本相关联,并且当第一成本小于第二成本时,调整平台可以选择第一执行计划,或者当第二成本小于第一成本时,可以选择第二执行计划。作为又一示例,第一执行计划可以与第一执行时间和第一成本相关联,第二执行计划可以与第二执行时间和第二成本相关联,并且基于第一执行时间和第一成本的第一组合(例如,加权组合)以及第二执行时间和第二成本的第二组合(例如,加权组合),调整平台可以选择第一执行计划或第二执行计划。
[0044] 在一些实现中,调整平台可以考虑多个因素(包括或不包括执行时间因素和/或成本因素)以确定选择哪个执行计划。与执行计划相关联的多个因素可以被加权并组合以生成执行计划的分数。调整平台可以基于该执行计划的分数相对于多个执行计划中的其余执行计划的分数,从多个执行计划中选择一个执行计划。
[0045] 在一些实现中,调整平台可以计算与执行计划相关联的执行时间或成本分别相对于与针对查询的初始执行计划(例如,在查询被标识为用于优化的候选之前所确定的初始执行计划)相关联的初始执行时间或初始成本的百分比改进。调整平台可以从多个执行计划之中选择与最高百分比改进相关联的特定执行计划。在一些实现中,当百分比改进是最高百分比改进并且百分比改进满足阈值时,调整平台可以选择该特定执行计划。
[0046] 在一些实现中,调整平台可以不从多个执行计划中选择特定执行计划。例如,当与针对查询的初始执行计划(例如,在查询被标识为用于优化的候选之前所确定的初始执行计划)相关联的初始执行时间小于针对多个执行计划的相应执行时间时,调整平台可以不选择该特定执行计划。作为另一示例,当与针对查询的初始执行计划(例如,在查询被标识为用于优化的候选之前所确定的初始执行计划)相关联的初始成本小于针对多个执行计划的相应成本时,调整平台可以不选择该特定执行计划。
[0047] 基于未选择特定执行计划,调整平台可以生成指示未选择执行计划的通知。该通知可以包括查询的标识符和/或与多个执行计划中的执行计划相关的信息(例如,执行计划的步骤、与执行计划相关联的成本、与执行计划相关联的执行时间等等)。该通知可以旨在供数据库管理员和/或被传输给数据库管理员,从而允许数据库管理员执行查询的优化。
[0048] 如附图标记130所示,调整平台(例如,根据调整过程)可以基于选择的特定执行计划来生成针对查询的简档。在一些实现中,调整平台可以使数据库系统生成针对查询的简档。该简档可以包括标识选择的特定执行计划的信息。以这种方式,简档可以允许数据库系统根据简档来处理后续的请求以执行查询,从而提高速度和效率。
[0049] 在一些实现中,简档可以包括标识与选择的特定执行计划相关联的提示的信息。附加地或备选地,简档可以包括与选择的特定执行计划相关的数据库信息(例如,与查询相关的表中的行数、与查询相关的表的大小、与查询相关的表的一个或多个索引、将被用于执行查询的驱动表、将被用于执行查询的一个或多个索引等等)。在这种情况下,每次查询被提交到数据库系统时,简档可以允许数据库系统根据提示和/或数据库信息来确定针对查询的执行计划(例如,与选择的特定执行计划不同的执行计划)。例如,当自从特定执行计划被选择以来发生了对数据库的改变(例如,对数据库的大小的改变,诸如数据库的表中的行数)时,这可能是有用的。
[0050] 调整平台可以在数据结构(例如,数据库、链接列表、表等)中存储简档,或者使数据库系统存储简档。在一些实现中,数据库系统可以根据简档来执行查询。例如,数据库系统可以(例如,从包括查询的应用中)接收执行查询的请求,获取针对查询的简档,并根据该简档执行查询。
[0051] 在一些实现中,调整平台可以周期性地执行调整过程。例如,调整平台可以根据调度(例如,每天一次、每周一次、每月一次等)周期性地执行调整过程。作为另一示例,当调整平台确定查询优化可以提高应用和/或数据库系统的效率时,调整平台可以周期性地执行调整过程。例如,调整平台可以监测应用和/或数据库系统的资源使用,并在资源使用满足阈值时执行调整过程。作为另一示例,如上所述,调整平台可以监测查询的执行时间,并且在执行时间满足阈值时对查询执行调整过程。
[0052] 如上所指示,图1A-图1E仅作为一个或多个示例而被提供。其他示例可以与关于图1A-图1E描述的示例不同。
[0053] 图2是在其中可以实现本文所描述的系统和/或方法的示例环境200的图。如图2中所示,环境200可以包括数据库服务器设备210、服务器设备220、调整平台230、计算资源235、云计算环境240和网络250。环境200的设备可以经由有线连接,无线连接或有线和无线连接的组合来互连。
[0054] 数据库服务器设备210包括能够存储、处理和/或路由与数据库系统相关联的信息的一个或多个设备。在一些实现中,数据库服务器设备210可以包括通信接口,该通信接口允许数据库服务器设备210从环境200中的其他设备接收信息和/或向其传输信息。
[0055] 服务器设备220包括能够存储、处理和/或路由与应用(例如,包括针对数据库系统的一个或多个查询的应用)相关联的信息的一个或多个设备。在一些实现中,服务器设备220可以包括通信接口,该通信接口允许服务器设备220从环境200中的其他设备接收信息和/或向其传输信息。
[0056] 调整平台230包括一个或多个计算资源,其与对作为用于优化的候选的查询执行调整过程相关联。例如,调整平台230可以是由云计算环境240实现的平台,该平台可以标识作为用于优化的候选的查询,根据多个提示确定针对该查询的多个执行计划,从多个执行计划中选择执行计划,基于选择的执行计划生成针对查询的简档等。
[0057] 调整平台230可以包括一个或多个服务器设备。在一些实现中,调整平台230由云计算环境240的计算资源235来实现。注意,尽管本文所描述的实现将调整平台230描述为被托管在云计算环境240中,但是在一些实现中,调整平台230可以不基于云或者可以部分地基于云。
[0058] 云计算环境240包括将计算作为服务递送的环境,由此可以将共享资源、服务等提供给数据库服务器设备210、服务器设备220等。云计算环境240可以提供不需要最终用户了解递送服务的系统和/或设备的物理位置和配置的计算、软件、数据访问、存储和/或其他服务。如图所示,云计算环境240可以包括调整平台230和计算资源235。
[0059] 计算资源235包括一个或多个个人计算机、工作站计算机、服务器设备或另一类型的计算和/或通信设备。在一些实现中,计算资源235可以托管调整平台230、数据库系统和/或应用。云资源可以包括在计算资源235中执行的计算实例、在计算资源235中提供的存储设备、由计算资源235提供的数据传送设备等。在一些实现中,计算资源235可以经由有线连接、无线连接、或有线和无线连接的组合来与其他计算资源235通信。
[0060] 如图2中进一步所示,计算资源235可以包括一组云资源,诸如一个或多个应用(“APP”)235-1、一个或多个虚拟机(“VM”)235-2、虚拟化存储装置(“VS”)235-3、一个或多个管理程序(“HYP”)235-4等。
[0061] 应用235-1包括一个或多个软件应用,其可以被提供给数据库服务器设备210、服务器设备220等或由其访问。应用235-1可以消除在数据库服务器设备210、服务器设备220等上安装和执行软件应用的需要。例如,应用235-1可以包括与调整平台230相关联的软件和/或能够经由云计算环境240被提供的任何其他软件。在一些实现中,一个应用235-1可以经由虚拟机235-2向/从一个或多个其他应用235-1发送/接收信息。
[0062] 虚拟机235-2包括执行诸如物理机之类的程序的机器(例如,计算机)的软件实现。虚拟机235-2可以是系统虚拟机或过程虚拟机,这取决于虚拟机235-2与任何真实机的对应程度和使用。系统虚拟机可以提供支持执行完整操作系统(OS)的完整系统平台。过程虚拟机可以执行单个程序,并且可以支持单个过程。在一些实现中,虚拟机235-2可以代表用户(例如,数据库服务器设备210、服务器设备220等)执行,并且可以管理云计算环境240的基础设施,诸如数据管理、同步或长持续时间数据传送。
[0063] 虚拟化存储装置235-3包括在计算资源235的存储系统或设备内使用虚拟化技术的一个或多个存储系统和/或一个或多个设备。在一些实现中,在存储系统的上下文中,虚拟化的类型可以包括块虚拟化和文件虚拟化。块虚拟化可以指的是逻辑存储从物理存储的抽象(或分离),使得可以在不考虑物理存储或异构结构的情况下访问存储系统。分离可以允许存储系统的管理员在管理员如何为最终用户管理存储方面具有灵活性。文件虚拟化可以消除在文件级别访问的数据与物理地存储文件的位置之间的依赖性。这可以支持存储使用、服务器合并和/或无中断文件迁移的性能的优化。
[0064] 管理程序235-4提供了硬件虚拟化技术,其允许多个操作系统(例如,“客户操作系统”)在诸如计算资源235之类的主机计算机上同时执行。管理程序235-4可以向客户操作系统呈现虚拟操作平台,并可以管理客户操作系统的执行。各种操作系统的多个实例可以共享虚拟化的硬件资源。
[0065] 网络250包括一个或多个有线和/或无线网络。例如,网络250可以包括蜂窝网络(例如,长期演进(LTE)网络、码分多址(CDMA)网络、3G网络、4G网络、5G网络、另一类型的下一代网络等)、公共陆地移动网络(PLMN)、局域网(LAN)、广域网(WAN)、城域网(MAN)、电话网(例如公共交换电话网(PSTN))、专用网络、自组织网络、内联网、互联网、基于光纤的网络、云计算网络等和/或这些或其他类型网络的组合。
[0066] 作为一个或多个示例,提供了图2中所示的设备和网络的数目和布置。在实践中,与图2中所示的那些相比,可以存在附加的设备和/或网络、更少的设备和/或网络、不同的设备和/或网络、或者被不同地布置的设备和/或网络。此外,可以在单个设备内实现图2中所示的两个或更多设备,或者可以将图2中所示的单个设备实现为多个分布式设备。附加地或备选地,环境200的一组设备(例如,一个或多个设备)可以执行被描述为由环境200的另一组设备执行的一个或多个功能。
[0067] 图3是设备300的示例组件的图。设备300可以对应于数据库服务器设备210、服务器设备220、调整平台230和/或计算资源235。在一些实现中,数据库服务器设备210、服务器设备220、调整平台230和/或计算资源235可以包括一个或多个设备300和/或设备300的一个或多个组件。如图3中所示,设备300可以包括总线310、处理器320、存储器330、存储组件340、输入组件350、输出组件360和/或通信接口370。
[0068] 总线310包括允许在设备300的多个组件之间进行通信的组件。处理器320以硬件、固件和/或硬件和软件的组合来实现。处理器320采取中央处理单元(CPU)、图形处理单元(GPU)、加速处理单元(APU)、微处理器、微控制器、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或另一类型的处理组件的形式。在一些实现中,处理器320包括能够被编程以执行功能的一个或多个处理器。存储器330包括随机存取存储器(RAM)、只读存储器(ROM)和/或存储信息和/或指令供处理器320使用的另一类型的动态或静态存储设备(例如闪存、磁存储器和/或光存储器)。
[0069] 存储组件340存储与设备300的操作和使用相关的信息和/或软件。例如,存储组件340可以包括硬盘(例如,磁盘、光盘和/或磁光盘)、固态驱动(SSD)、压缩盘(CD)、数字多功能光盘(DVD)、软盘、盒带、磁带和/或另一类型的非瞬态计算机可读介质、以及对应的驱动。
[0070] 输入组件350包括允许设备300诸如经由用户输入(例如,触摸屏显示器、键盘、小键盘、鼠标、按钮、开关和/或麦克风)接收信息的组件。附加地或备选地,输入组件350可以包括用于确定位置的组件(例如,全球定位系统(GPS)组件)和/或传感器(例如,加速度计、陀螺仪、致动器、另一类型的位置或环境传感器等)。输出组件360包括提供来自设备300的输出信息的组件(经由例如显示器、扬声器、触觉反馈组件、音频或视觉指示器等)。
[0071] 通信接口370包括类似收发器的组件(例如,收发器、分开的接收器、分开的传输器等等),其使得设备300能够诸如经由有线连接、无线连接、或有线和无线连接的组合来与其他设备通信。通信接口370可以允许设备300从另一设备接收信息和/或向另一设备提供信息。例如,通信接口370可以包括以太网接口、光接口、同轴接口、红外接口、射频(RF)接口、通用串行总线(USB)接口、Wi-Fi接口、蜂窝网络接口等。
[0072] 设备300可以执行本文所描述的一个或多个过程。设备300可以基于处理器320执行由诸如存储器330和/或存储组件340之类的非瞬态计算机可读介质存储的软件指令来执行这些过程。如本文中所使用的,术语“计算机可读介质”是指非瞬态存储器设备。存储器设备包括单个物理存储设备内的存储器空间或散布在多个物理存储设备上的存储器空间。
[0073] 可以经由通信接口370从另一计算机可读介质或另一设备将软件指令读取到存储器330和/或存储组件340中。当被执行时,存储在存储器330和/或存储组件340中的软件指令可以使处理器320执行本文所描述的一个或多个过程。附加地或备选地,可以使用硬件电路来代替软件指令或与软件指令结合来执行本文所描述的一个或多个过程。因此,本文所描述的实现不限于硬件电路和软件的任何特定组合。
[0074] 作为示例提供了图3中所示的组件的数目和布置。在实践中,与图3中所示的那些相比,设备300可以包括附加的组件、更少的组件、不同的组件或被不同地布置的组件。附加地或备选地,设备300的一组组件(例如,一个或多个组件)可以执行被描述为由设备300的另一组组件执行的一个或多个功能。
[0075] 图4是用于利用优化器提示进行查询调整的示例过程400的流程图。在一些实现中,图4的一个或多个处理框可以由调整平台(例如,调整平台230)执行。在一些实现中,图4的一个或多个处理框可以由与调整平台分离或包括调整平台的另一设备或一组设备来执行,诸如数据库服务器设备(例如,数据库服务器设备210)、服务器设备(例如,服务器设备220)等。
[0076] 如图4中所示,过程400可以包括标识针对数据库系统的查询,其中该查询是用于优化的候选(框410)。例如,如上所述,调整平台(例如,使用计算资源235、处理器320、存储器330、存储组件340等)可以标识针对数据库系统的查询。在一些实现中,该查询是用于优化的候选。
[0077] 如图4中进一步所示,过程400可以包括根据用于执行查询的第一提示确定第一执行计划,并且根据用于执行查询的第二提示确定第二执行计划,其中第一执行计划与第一执行时间相关联并且第二执行计划与第二执行时间相关联(框420)。例如,如上所述,调整平台(例如,使用计算资源235、处理器320、存储器330、存储组件340等)可以根据用于执行查询的第一提示确定第一执行计划并且根据用于执行查询的第二提示确定第二执行计划。在一些实现中,第一执行计划与第一执行时间相关联,并且第二执行计划与第二执行时间相关联。
[0078] 如图4中进一步所示,过程400可以包括选择第一执行计划或第二执行计划作为选择的执行计划,其中当第一执行时间小于第二执行时间时,第一执行计划将被选择作为选择的执行计划,并且其中当第二执行时间小于第一执行时间时,第二执行计划将被选择作为选择的执行计划(框430)。例如,如上所述,调整平台(例如,使用计算资源235、处理器320、存储器330、存储组件340等)可以选择第一执行计划或第二执行计划作为选择的执行计划。在一些实现中,当第一执行时间小于第二执行时间时,第一执行计划将被选择作为选择的执行计划。在一些实现中,当第二执行时间小于第一执行时间时,第二执行计划将被选择作为选择的执行计划。
[0079] 如图4中进一步所示,过程400可以包括基于选择选择的执行计划来生成针对查询的简档,其中简档基于选择的执行计划,并且其中数据库系统将根据简档来执行查询(框440)。例如,如上所述,调整平台(例如,使用计算资源235、处理器320、存储器330、存储组件
340等)可以基于选择所选择的执行计划来生成针对查询的简档。在一些实现中,简档基于选择的执行计划。在一些实现中,数据库系统将根据简档来执行查询。
[0080] 过程400可以包括附加的实现,诸如结合本文其他地方描述的一个或多个其他过程和/或在下面描述的任何单个实现或任何实现组合。
[0081] 在一些实现中,在被标识为用于优化的候选之前,该查询可以根据与初始执行时间相关联的初始执行计划来执行,并且当初始执行时间满足阈值时,查询可以被标识为用于优化的候选。在一些实现中,调整平台在确定第一执行计划和第二执行计划时,可以使用数据库系统的查询优化器来确定第一执行计划和第二执行计划。
[0082] 在一些实现中,查询可以被表达为文本语句。在一些实现中,当确定第一执行计划和第二执行计划时,调整平台可以用第一提示来更改文本语句以获取第一更改后的查询,并且用第二提示来更改文本语句以获取第二更改后的查询,以及基于处理第一更改后的查询来确定第一执行计划,并且基于处理第二更改后的查询来确定第二执行计划。
[0083] 在一些实现中,调整平台可以确定与查询相关联的驱动表,其中第一提示或第二提示与驱动表相关。在一些实现中,调整平台可以确定与查询相关联的驱动表的一个或多个索引,其中第一提示或第二提示与一个或多个索引相关。
[0084] 在一些实现中,根据以下中的一项或多项,第一提示提供第一引导来确定第一执行计划,并且第二提示提供第二引导来确定第二执行计划:要被返回的特定数目的行、基于规则的优化、在表联接次序中要首先被使用的特定表、要被使用于索引扫描的特定索引、使用特定数目的处理器的并行处理、要被使用作为嵌套循环联接操作的内部表的特定表、特定访问路径或要被使用于以特定排序方向的索引扫描的特定索引。
[0085] 尽管图4示出了过程400的示例框,但是在一些实现中,与图4中描绘的那些相比,过程400可以包括附加的框、更少的框、不同的框或被不同地布置的框。附加地或备选地,可以并行执行过程400的两个或更多块。
[0086] 图5是用于利用优化器提示进行查询调整的示例过程500的流程图。在一些实现中,图5的一个或多个处理框可以由调整平台(例如,调整平台230)执行。在一些实现中,图5的一个或多个处理框可以由与调整平台分离或包括调整平台的另一设备或一组设备来执行,诸如数据库服务器设备(例如,数据库服务器设备210)、服务器设备(例如,服务器设备220)等。
[0087] 如图5中所示,过程500可以包括标识针对数据库系统的查询,其中该查询是用于优化的候选(框510)。例如,如上所述,调整平台(例如,使用计算资源235、处理器320、存储器330、存储组件340等)可以标识针对数据库系统的查询。在一些实现中,该查询是用于优化的候选。
[0088] 如图5中进一步所示,过程500可以包括用第一提示来更改文本语句以获取第一更改后的查询,并且用第二提示来更改文本语句以获取第二更改后的查询(框520)。例如,如上所述,调整平台(例如,使用计算资源235、处理器320、存储器330、存储组件340等)可以用第一提示来更改文本语句以获取第一更改后的查询,并且用第二提示来更改文本语句以获取第二更改后的查询。
[0089] 如图5中进一步所示,过程500可以包括基于处理第一更改后的查询来确定第一执行计划,并且基于处理第二更改后的查询来确定第二执行计划(框530)。例如,如上所述,调整平台(例如,使用计算资源235、处理器320、存储器330、存储组件340等)可以基于处理第一更改后的查询来确定第一执行计划,并且基于处理第二更改后的查询来确定第二执行计划。
[0090] 如图5中进一步所示,过程500可以包括选择第一执行计划或第二执行计划作为选择的执行计划(框540)。例如,如上所述,调整平台(例如,使用计算资源235、处理器320、存储器330、存储组件340等)可以选择第一执行计划或第二执行计划作为选择的执行计划。
[0091] 如图5中进一步所示,过程500可以包括基于选择所选择的执行计划来生成针对查询的简档,其中简档基于选择的执行计划(框550)。例如,如上所述,调整平台(例如,使用计算资源235、处理器320、存储器330、存储组件340等)可以基于选择所选择的执行计划来生成针对查询的简档。在一些实现中,简档基于选择的执行计划。
[0092] 如图5中进一步所示,过程500可以包括根据简档来执行查询(框560)。例如,如上所述,调整平台(例如,使用计算资源235、处理器320、存储器330、存储组件340等)可以根据简档来执行查询。
[0093] 过程500可以包括附加的实现,诸如结合本文其他地方描述的一个或多个其他过程和/或在下面描述的任何单个实现或任何实现组合。
[0094] 在一些实现中,在被标识为用于优化的候选之前,查询根据与初始执行时间相关联的初始执行计划来执行,并且当初始执行时间满足阈值时,查询可以被标识为用于优化的候选。在一些实现中,调整平台可以将简档与查询相关联地存储。在一些实现中,调整平台可以接收指令以执行查询,获取简档,以及根据简档来执行查询。在一些实现中,当选择第一执行计划或第二执行计划作为选择的执行计划时,调整平台可以既不选择第一执行计划也不选择第二执行计划作为选择的执行计划,并且生成指示没有执行计划针对查询而被选择的通知。
[0095] 在一些实现中,基于查询的存储位置,第一执行计划或第二执行计划被选择作为选择的执行计划。在一些实现中,当选择第一执行计划或第二执行计划作为选择的执行计划时,调整平台可以基于与第一更改后的查询相关联的第一执行时间或成本或基于与第二更改后的查询相关联的第二执行时间或成本来选择第一执行计划或第二执行计划作为选择的执行计划。
[0096] 在一些实现中,根据以下中的一项或多项,第一提示提供第一引导来确定第一执行计划,并且第二提示提供第二引导来确定第二执行计划:要被返回的特定数目的行、基于规则的优化、在表联接次序中要首先被使用的特定表、要被使用于索引扫描的特定索引、使用特定数目的处理器的并行处理、要被使用作为嵌套循环联接操作的内部表的特定表、特定访问路径或要被使用于以特定排序方向的索引扫描的特定索引。
[0097] 尽管图5示出了过程500的示例框,但是在一些实现中,与图5中描绘的那些相比,过程500可以包括附加的框、更少的框、不同的框或被不同地布置的框。附加地或备选地,可以并行执行过程500的两个或更多块。
[0098] 图6是用于利用优化器提示进行查询调整的示例过程600的流程图。在一些实现中,图6的一个或多个处理框可以由调整平台(例如,调整平台230)执行。在一些实现中,图6的一个或多个处理框可以由与调整平台分离或包括调整平台的另一设备或一组设备来执行,例如数据库服务器设备(例如,数据库服务器设备210)、服务器设备(例如,服务器设备220)等。
[0099] 如图6中所示,过程600可以包括标识针对数据库系统的查询,其中该查询是用于优化的候选(框610)。例如,如上所述,调整平台(例如,使用计算资源235、处理器320、存储器330、存储组件340等)可以标识针对数据库系统的查询。在一些实现中,该查询是用于优化的候选。
[0100] 如图6中进一步所示,过程600可以包括提供用于执行查询的第一提示和用于执行查询的第二提示,其中数据库系统将根据用于执行查询的第一提示来确定第一执行计划,并且根据用于执行查询的第二提示来确定第二执行计划,并且其中第一执行计划与第一执行时间相关联,并且第二执行计划与第二执行时间相关联(框620)。例如,如上所述,调整平台(例如,使用计算资源235、处理器320、存储器330、存储组件340等)可以提供用于执行查询的第一提示和用于执行查询的第二提示。在一些实现中,数据库系统将根据用于执行查询的第一提示来确定第一执行计划,并且根据用于执行查询的第二提示来确定第二执行计划。在一些实现中,第一执行计划与第一执行时间相关联,并且第二执行计划与第二执行时间相关联。
[0101] 如图6中进一步所示,过程600可以包括选择第一执行计划或第二执行计划作为选择的执行计划,其中当第一执行时间小于第二执行时间时,第一执行计划将被选择作为选择的执行计划,并且其中当第二执行时间小于第一执行时间时,第二执行计划将被选择作为选择的执行计划(框630)。例如,如上所述,调整平台(例如,使用计算资源235、处理器320、存储器330、存储组件340等)可以选择第一执行计划或第二执行计划作为选择的执行计划。在一些实现中,当第一执行时间小于第二执行时间时,第一执行计划将被选择作为选择的执行计划。在一些实现中,当第二执行时间小于第一执行时间时,第二执行计划将被选择作为选择的执行计划。
[0102] 如图6中进一步所示,过程600可以包括基于选择所选择的执行计划来生成针对查询的简档,其中简档基于选择的执行计划,并且其中数据库系统将根据简档来执行查询(框640)。例如,如上所述,调整平台(例如,使用计算资源235、处理器320、存储器330、存储组件
340等)可以基于选择所选择的执行计划来生成针对查询的简档。在一些实现中,简档基于选择的执行计划。在一些实现中,数据库系统将根据简档来执行查询。
[0103] 处理600可以包括附加的实现,诸如结合本文其他地方描述的一个或多个其他过程和/或在下面描述的任何单个实现或任何实现组合。
[0104] 在一些实现中,查询可以被表达为文本语句。在一些实现中,调整平台可以用第一提示来更改文本语句以获取第一更改后的查询,并用第二提示来更改文本语句以获取第二更改后的查询。在一些实现中,当提供第一提示和第二提示时,调整平台可以提供第一更改后的查询和第二更改后的查询。
[0105] 在一些实现中,在被标识为用于优化的候选之前,查询可以由数据库系统根据与初始执行时间相关联的初始执行计划来执行,并且当第一执行时间小于初始执行时间和第二执行时间时,第一执行计划可以被选择,并且当第二执行时间小于初始执行时间和第一执行时间时,第二执行计划可以被选择。在一些实现中,在被标识为用于优化的候选之前,查询可以由数据库系统根据与初始执行时间相关联的初始执行计划来执行,并且当初始执行时间满足第一阈值、查询是从数据库系统取回数据的请求、并且与应用有关的查询的执行次数满足第二阈值时,查询可以是用于优化的候选。
[0106] 在一些实现中,第一提示和第二提示被包括在可以被用于确定多个执行计划的多个提示中。在一些实现中,根据以下中的一项或多项,第一提示提供第一引导来确定第一执行计划,并且第二提示提供第二引导来确定第二执行计划:要被返回的特定数目的行、在表联接次序中要首先被使用的特定表、要被使用于索引扫描的特定索引、使用特定数目的处理器的并行处理、要被使用作为嵌套循环联接操作的内部表的特定表、特定访问路径或要被使用于以特定排序方向的索引扫描的特定索引。
[0107] 尽管图6示出了过程600的示例框,但是在一些实现中,与图6中描绘的那些相比,过程600可以包括附加的框、更少的框、不同的框或被不同地布置的框。附加地或备选地,可以并行执行过程600的两个或更多块。
[0108] 以下是一些示例实施例。
[0109] 示例1:一种方法,包括:由设备标识针对数据库系统的查询,其中所述查询是用于优化的候选;由所述设备根据用于执行所述查询的第一提示确定第一执行计划,并且根据用于执行所述查询的第二提示确定第二执行计划,其中所述第一执行计划与第一执行时间相关联,并且所述第二执行计划与第二执行时间相关联;由所述设备选择所述第一执行计划或所述第二执行计划作为选择的执行计划,其中当所述第一执行时间小于所述第二执行时间时,所述第一执行计划将被选择作为所述选择的执行计划,其中当所述第二执行时间小于所述第一执行时间时,所述第二执行计划将被选择作为所述选择的执行计划;以及由所述设备基于选择所述选择的执行计划生成针对所述查询的简档,其中所述简档基于所述选择的执行计划,其中所述数据库系统将根据所述简档来执行所述查询。
[0110] 示例2:根据示例1所述的方法,其中所述查询在被标识为用于优化的所述候选之前,根据与初始执行时间相关联的初始执行计划而被执行,其中当所述初始执行时间满足阈值时,所述查询被标识为用于优化的所述候选。
[0111] 示例3:根据示例1所述的方法,其中确定所述第一执行计划和所述第二执行计划包括:使用所述数据库系统的查询优化器来确定所述第一执行计划和所述第二执行计划。
[0112] 示例4:根据示例1所述的方法,其中所述查询被表达为文本语句,其中确定所述第一执行计划和所述第二执行计划包括:用所述第一提示更改所述文本语句以获取第一更改后的查询,并且用所述第二提示更改所述文本语句以获取第二更改后的查询;以及基于处理所述第一更改后的查询来确定所述第一执行计划,以及基于处理所述第二更改后的查询来确定所述第二执行计划。
[0113] 示例5:根据示例1所述的方法,还包括:确定与所述查询相关联的驱动表,其中所述第一提示或所述第二提示与所述驱动表相关。
[0114] 示例6:根据示例1所述的方法,还包括:确定与所述查询相关联的驱动表的一个或多个索引,其中所述第一提示或所述第二提示与所述一个或多个索引相关。
[0115] 示例7:根据示例1所述的方法,其中根据以下中的一项或多项,所述第一提示提供第一引导以确定所述第一执行计划,并且所述第二提示提供第二引导以确定所述第二执行计划:要被返回的特定数目的行,基于规则的优化,在表联接次序中要首先被使用的特定表,要被使用于索引扫描的特定索引,使用特定数目的处理器的并行处理,要被使用作为嵌套循环联接操作的内部表的特定表,特定访问路径,或要被使用于以特定排序方向的索引扫描的特定索引。
[0116] 示例8:一种存储指令的非瞬态计算机可读介质,所述指令包括:一个或多个指令,所述一个或多个指令在由一个或多个处理器执行时,使所述一个或多个处理器:标识针对数据库系统的查询,其中所述查询是用于优化的候选,其中所述查询被表达为文本语句;用第一提示更改所述文本语句以获取第一更改后的查询,并且用第二提示更改所述文本语句以获取第二更改后的查询;基于处理所述第一更改后的查询来确定第一执行计划,并且基于处理所述第二更改后的查询来确定第二执行计划;选择所述第一执行计划或所述第二执行计划作为选择的执行计划;基于选择所述选择的执行计划,生成针对所述查询的简档,其中所述简档基于所述选择的执行计划;以及根据所述简档来执行所述查询。
[0117] 示例9:根据示例8所述的非瞬态计算机可读介质,其中所述查询在被标识为用于优化的所述候选之前,根据与初始执行时间相关联的初始执行计划而被执行,其中当所述初始执行时间满足阈值时,所述查询被标识为用于优化的所述候选。
[0118] 示例10:根据示例8所述的非瞬态计算机可读介质,其中所述一个或多个指令在由所述一个或多个处理器执行时,还使所述一个或多个处理器:将所述简档与所述查询相关联地存储,其中使所述一个或多个处理器执行所述查询的所述一个或多个指令使所述一个或多个处理器:接收执行所述查询的指令;获取所述简档;以及根据所述简档来执行所述查询。
[0119] 示例11:根据示例8所述的非瞬态计算机可读介质,其中使所述一个或多个处理器选择所述第一执行计划或所述第二执行计划作为所述选择的执行计划的所述一个或多个指令使所述一个或多个处理器:既不选择所述第一执行计划也不选择所述第二执行计划作为所述选择的执行计划;以及生成指示没有执行计划针对所述查询而被选择的通知。
[0120] 示例12:根据示例8所述的非瞬态计算机可读介质,其中基于所述查询的存储位置,所述第一执行计划或所述第二执行计划被选择作为所述选择的执行计划。
[0121] 示例13:根据示例8所述的非瞬态计算机可读介质,其中使所述一个或多个处理器选择所述第一执行计划或所述第二执行计划作为所述选择的执行计划的所述一个或多个指令使所述一个或多个处理器:基于与所述第一更改后的查询相关联的第一执行时间或成本,或者基于与所述第二更改后的查询相关联的第二执行时间或成本,选择所述第一执行计划或所述第二执行计划作为所述选择的执行计划。
[0122] 示例14:根据示例8所述的非瞬态计算机可读介质,其中根据以下中的一项或多项,所述第一提示提供第一引导以确定所述第一执行计划,并且所述第二提示提供第二引导以确定所述第二执行计划:要被返回的特定数目的行,基于规则的优化,在表联接次序中要首先被使用的特定表,要被使用于索引扫描的特定索引,使用特定数目的处理器的并行处理,要被使用作为嵌套循环联接操作的内部表的特定表,特定访问路径,或要被使用于以特定排序方向的索引扫描的特定索引。
[0123] 示例15:一种设备,包括:一个或多个存储器;以及一个或多个处理器,通信地耦合到所述一个或多个存储器,用以:标识针对数据库系统的查询,其中所述查询是用于优化的候选;向所述数据库系统提供用于执行所述查询的第一提示和用于执行所述查询的第二提示,其中所述数据库系统将根据用于执行所述查询的所述第一提示确定第一执行计划,并且根据用于执行所述查询的所述第二提示确定第二执行计划,其中所述第一执行计划与第一执行时间相关联,并且所述第二执行计划与第二执行时间相关联;选择所述第一执行计划或所述第二执行计划作为选择的执行计划,其中当所述第一执行时间小于所述第二执行时间时,所述第一执行计划将被选择作为所述选择的执行计划,其中当所述第二执行时间小于所述第一执行时间时,所述第二执行计划将被选择作为所述选择的执行计划;以及基于选择所述选择的执行计划,生成针对所述查询的简档,其中所述简档基于所述选择的执行计划,其中所述数据库系统将根据所述简档来执行所述查询。
[0124] 示例16:根据示例15所述的设备,其中所述查询被表达为文本语句,其中所述一个或多个处理器还用以:用所述第一提示更改所述文本语句以获取第一更改后的查询,并且用所述第二提示更改所述文本语句以获取第二更改后的查询,其中所述一个或多个处理器在提供所述第一提示和所述第二提示时用以:提供所述第一更改后的查询和所述第二更改后的查询。
[0125] 示例17:根据示例15所述的设备,其中所述查询在被标识为用于优化的所述候选之前,由所述数据库系统根据与初始执行时间相关联的初始执行计划来执行,其中当所述第一执行时间小于所述初始执行时间和所述第二执行时间时,所述第一执行计划将被选择,其中当所述第二执行时间小于所述初始执行时间和所述第一执行时间时,所述第二执行计划将被选择。
[0126] 示例18:根据示例15所述的设备,其中所述查询在被标识为用于优化的所述候选之前,由所述数据库系统根据与初始执行时间相关联的初始执行计划来执行,其中当所述初始执行时间满足第一阈值、所述查询是从所述数据库系统取回数据的请求、并且与应用有关的所述查询的执行次数满足第二阈值时,所述查询是用于优化的所述候选。
[0127] 示例19:根据示例15所述的设备,其中所述第一提示和所述第二提示被包括在多个提示中,所述多个提示要被使用于确定多个执行计划。
[0128] 示例20:根据示例15所述的设备,其中根据以下中的一项或多项,所述第一提示提供第一引导以确定所述第一执行计划,并且所述第二提示提供第二引导以确定所述第二执行计划:要被返回的特定数目的行,基于规则的优化,在表联接次序中要首先被使用的特定表,要被使用于索引扫描的特定索引,使用特定数目的处理器的并行处理,要被使用作为嵌套循环联接操作的内部表的特定表,特定访问路径,或要被使用于以特定排序方向的索引扫描的特定索引。
[0129] 前述公开内容提供了说明和描述,但并不旨在穷举或将实现限制为所公开的精确形式。可以根据以上公开内容进行修改和变化,或者可以从实现的实践中获取修改和变化。
[0130] 如本文中所使用的,术语“组件”旨在被广义地解释为硬件、固件和/或硬件和软件的组合。
[0131] 本文结合阈值描述了一些实现。如本文中所使用的,取决于上下文,满足阈值可以指的是大于阈值、多于阈值、高于阈值、大于或等于阈值、小于阈值、少于阈值、低于阈值、小于或等于阈值、等于阈值等。
[0132] 显而易见的是,本文所述的系统和/或方法可以以硬件、固件或硬件和软件的组合的不同形式来实现。用于实现这些系统和/或方法的实际的专用控制硬件或软件代码并不限制实现。因此,本文中不参考特定软件代码来描述系统和/或方法的操作和行为——应理解,可以基于本文的描述将软件和硬件设计为实现系统和/或方法。
[0133] 即使在权利要求中叙述和/或在说明书中公开了特征的特定组合,这些组合也不旨在限制各种实现的公开。实际上,许多这些特征可以以权利要求书中未具体叙述和/或说明书中未公开的方式进行组合。尽管下面列出的每个从属权利要求可能仅直接取决于一个权利要求,但是各种实现的公开包括与权利要求组中的每个其他权利要求相组合的每个从属权利要求。
[0134] 除非如此明确地描述,否则本文中使用的元素、动作或指令均不应被解释为关键或必要的。另外,如本文中所使用的,冠词“一”和“一个”旨在包括一个或多个项目,并且可以与“一个或多个”互换使用。此外,如本文中所使用的,术语“集合”旨在包括一个或多个项目(例如,相关项目、不相关项目、相关和不相关项目的组合等),并且可以与“一个或多个”互换使用。在仅意指一个项目的情况下,使用短语“仅一个”或类似语言。另外,如本文中所使用的,术语“具有”旨在是开放式术语。此外,除非另有明确说明,短语“基于”旨在表示“至少部分地基于”。