掌桥专利:专业的专利平台
掌桥专利
首页

自动化实时索引管理

文献发布时间:2023-06-19 10:46:31


自动化实时索引管理

技术领域

本发明涉及管理数据库管理系统(DBMS)中的索引。

背景技术

在DBMS中,索引是数据库性能的必要特征。尽管替代的性能特征(诸如具体化视图以及内存中的列式存储和处理)取得了进步,索引特征的重要性仍是首要的。最佳的索引混合使从非常大的表格提取相对少量的数据时的资源利用(CPU和IO)最小化,并且提高应用吞吐量。

因为索引的重要性,管理索引混合是重要的任务。一般来说,管理索引混合包括创建提供最佳性能的索引混合并且维护该混合以确保该混合仍是最佳的。

创建最佳索引混合的任务需要广泛地了解数据库的结构、查询和更新数据库的工作负荷以及DBMS的内部操作。另外,一旦被创建,管理该混合以确保该混合提供最佳性能的任务是繁重的,需要不断地监视工作负荷、数据结构变化、以及该混合中的索引所提供的性能和添加到该混合的潜在新索引所提供的潜在性能的重新评估。因为该任务是繁重的,所以它通常不被执行,或者被执行得不足够频繁或者不完全地,并且由实际实现的索引混合提供的性能劣化。

本文中描述了用于索引的自动化管理的技术。本节中描述的方法是可以被寻求的方法,但是不一定是以前已经被设想过或寻求过的方法。因此,除非另有指示,否则不应仅由于本节中描述的方法被包括在本节中就假定这些方法中的任何一个都有资格作为现有技术。

附图说明

在附图中:

图1是描绘根据本发明的实施例的用于自动化索引管理的过程的示图。

图2是描绘根据本发明的实施例的用于识别并产生仅元(meta-only)自动索引的过程的示图。

图3A是描绘根据本发明的实施例的用于仅元索引的仅编译资格取得的过程的示图。

图3B是描绘根据本发明的实施例的用于仅元索引的仅编译资格取得的过程的示图。

图4A是描绘根据本发明的实施例的用于测试执行(test-execute)核实(verification)的过程的示图。

图4B是描绘根据本发明的实施例的用于使自动索引可用的过程是测试执行核实的示图。

图5是描绘根据本发明的实施例的基于共享游标池机制实现的首批(first-in)核实的示图。

图6A是描绘根据本发明的实施例的用于管理自动索引使用的活动的示图。

图6B是描绘根据本发明的实施例的用于实现及时(just-in-time)自动索引的过程的示图。

图7A是描绘根据本发明的实施例的容器数据库管理系统的示图。

图7B是描绘根据本发明的实施例的容器数据库管理系统的示图。

图8描绘根据本发明的实施例的用于实现容器数据库管理系统中的自动化索引管理的方法。

图9是描绘可以用于实现本发明的实施例的计算机系统的示图。

图10描绘可以用于控制根据本发明的实施例的计算机系统的操作的软件系统。

具体实施方式

在以下描述中,为了说明的目的,阐述了许多特定的细节,以便提供本发明的透彻理解。然而,将显而易见的是,本发明可以在没有这些特定的细节的情况下实施。

本文中描述了用于使索引管理自动化的方法,这些方法在本文中被称为自动化索引管理。自动化索引管理需要自动化地监视DBMS中的查询工作负荷以确定用于评估新的潜在索引的高负荷查询集合。在不需要用户批准或动作的情况下,潜在索引在使它们不被数据库应用工作负荷使用的状态下被自动地创建,被评估和测试,并然后被使得可供系统广泛用于执行终端用户发出的查询。通过自动化索引管理创建的索引在本文中被称为自动索引。

图1是自动化索引管理的重要的操作和活动的流程图概览。参照图1,操作105至130作为循环被迭代地执行以产生新的自动索引。这些操作被统称为自动化索引创建。该循环的每次迭代可以产生新的自动索引、自动索引的状态的变化、或实际上被认为没有帮助的自动索引的移除。

在105,形成工作集合的查询。通过监视被执行的查询以确定哪些在阈值时间段内被较频繁地执行来形成所述工作集合。如果查询在至少阈值时间段内尚未被添加到工作集合,则将该查询添加到工作集合。

在110,识别自动索引候选。根据实施例,通过监视列使用来识别候选。候选可以是新的索引,这些索引具有被非常频繁地用作过滤谓词、联接谓词、以及工作集合中的其他查询操作(诸如按次序或按分组操作)中的列的键(key)。

在115,将候选的自动索引创建为仅元自动索引。仅元自动索引在数据库字典中有定义,但是尚未具体化。尚未具体化意味着用于索引的基本数据(“索引数据”)尚未被产生和存储在数据库中。索引数据的例子是以二进制树形式组织的键值。针对仅元自动索引,可以收集索引统计。通过这样定义自动索引,当查询被编译时,可以产生即使索引没有具体化、也使用仅元自动索引的一个或多个候选执行计划。

仅元自动索引还被创建为不可见的索引。当编译由数据库应用或终端用户发出的查询时,不可见的索引不被DBMS考虑。

在120,对工作集合中的每个查询执行仅编译资格取得(qualification)。在仅编译资格取得中,由DBMS编译工作集合中的每个查询。当编译工作集合中的查询时,编译考虑仅元自动索引和其他的现有索引。编译可以产生包括仅元自动索引的执行计划和不包括仅元自动索引的执行计划的成本。一般来说,成本最小的执行计划被选择。如果编译为查询选择使用仅元自动索引的执行计划,则仅元自动索引已经取得用于该查询的资格。取得用于工作集合中的任何查询的资格的任何自动索引被添加到“取得编译资格的集合”。

在125,使取得编译资格的集合中的仅元自动索引具体化。即使被具体化,自动索引仍是不可见的,使得自动索引不被用于终端用户查询。这阻止在确认有潜力提高性能之前使用会导致性能劣化的自动索引。

在130,对具体化的取得编译资格的集合执行测试执行核实。测试执行核实涉及执行工作集合中的查询以确定自动索引的使用实际上是否改进了查询的性能执行。改进工作集合中的任何查询的执行的自动索引取得了测试执行的资格。

可能的是,自动索引可以改进工作集合中的一个查询的执行,但是劣化工作集合中的另一个查询的执行。在该情况下,自动索引可以被认为取得了测试执行的资格,不过是以有限的方式,因为自动索引被阻止用于所述另一个查询的执行。当自动索引的使用被阻止用于特定查询的执行时,在此处称为对于该查询封锁(lock down)自动索引。

在135,使取得测试执行的资格的自动索引“可见”,这意味着终端用户发出的查询的编译考虑自动索引,并且可以产生使用自动索引的执行计划。

测试执行核实仅阻止对工作集合中的查询使用劣化查询执行的自动索引。然而,一旦变为可见,自动索引就可能劣化不在工作集合中的查询的查询执行。因此,对于这样的查询,使用在本文中被称为首批核实的机制来确定自动索引的使用是否改进查询的性能查询执行。(140)

在首批核实中,执行计划的头一次或头多次对查询使用自动索引,对执行计划进行测试以核实该查询的查询执行是改进了、还是劣化了。自动索引被阻止用于该查询的后续编译。因此,当数据库会话编译产生首先使用自动索引的执行计划的查询时,对执行计划进行测试。对于可以同时或随后编译该查询的一个或多个其他的数据库会话,自动索引被阻止用于该查询的编译。

对使用自动索引的执行计划的查询执行进行评估。如果查询性能劣化,则对该查询封锁自动索引,从而阻止其他数据库会话和用户对于该查询的查询执行劣化。

监视自动索引。如果未被使用,则停用自动索引。(145)

图2是描绘识别仅元自动索引的进一步的细节的过程流程图。一旦被识别,所述过程就创建仅元自动索引。

参照图2,选择高负荷查询。(205)通过检查查询历史235来识别高负荷查询。查询历史235是DBMS内跟踪查询的执行的储存库,该储存库包括性能度量、以及最近何时被执行和最后何时被选择作为工作集合的高负荷候选。选择的准则可以包括:(a)查询在时间窗口内至少具有某个工作负荷阈值(就性能度量而言被测得),(b)查询是新的查询,即,在阈值时间段内最近没有被选择用于工作集合,以及(c)查询的工作负荷与最近执行的其他查询相比具有阈值排名。可能没有查询被选择。

查询历史235中的信息至少部分是通过在DBMS内执行查询的数据库进程产生的。对于每个查询,查询历史235可以包括:(a)关于查询的执行的性能度量,包括缓冲器访问的次数和平均数、I/O读取、被处理的行、CPU处理时间、以及逝去的执行时间;(b)最后的执行时间;(c)使用的执行计划,包括哪些索引被使用并且通过编译被评估;(d)以及查询最后何时被选择用于工作集合。

在215,通过检查工作集合中的查询的列使用来形成自动索引的候选集合。一般来说,所形成的索引是具有键的那些索引,这些键对应于WHERE子句过滤谓词(“过滤谓词”)和联接谓词中的不同组的一个或多个列,并且对于这些键,还没有在数据库字典中定义索引。可以针对具有在过滤谓词或联接谓词的结合中引用的列的每组列形成自动索引。每组列可以表示用于潜在的自动索引的键或复合键。

可以对每组不同的列创建自动索引。然而,当一个自动索引可以被用于多组列时,如下面例示说明的,可以仅创建一个自动索引。创建更少的自动索引节约了存储资源,并且减少了修改由自动索引索引的表格时维护索引的处理(CPU和I/O)。

为了例示说明如何形成候选集合,提供图2中的列使用例子240。在列使用例子240中,在查询QA中的过滤谓词A=1以及查询QB中的谓词A=2&B=2中引用了列A。因此,查询QA和QB引用列组(A)和(A,B)。可以针对每组产生自动索引,即,以(A)作为索引键的自动索引和以组(A,B)作为自动索引键(即,复合键)的另一个自动索引。然而,具有复合键(A,B)的索引也可以被用作对于仅A上的谓词的访问路径,如查询QA中那样。因此,将具有复合键(A,B)的仅一个自动索引添加到候选索引。

函数自动索引也可以在被应用于列的函数上创建。例如,QC包括谓词UPPER(name)=”SMITH”。可以将在列名称上应用函数UPPER的函数自动索引添加到候选列表。

在220,形成数据定义语言命令(“DDL”),并且执行DDL以创建不可见的仅元自动索引。DDL命令包括指定索引的键等、自动索引是自动索引、是不可见的、并且没有被具体化的参数和/或子句。DBMS的数据库字典被相应地更新以定义被标记为不可见并且没有被具体化的自动索引的索引。

在225,产生索引统计。一般来说,通过以下方式产生索引的索引统计:执行表格中的行的“索引统计扫描”,并且对于这些行中的每一行,检查索引键中的列值。可以产生的一个特别重要的索引统计是索引的键的不同键值的数量。从不同键值的数量,可以产生其他的索引统计。例如,可以从表格中的行数、不同键值的数量、以及键的大小估计存储索引所需的数据块的数量。

根据实施例,对一组多个自动索引执行表格上的单次索引统计扫描。读取表格的行中的每一行,并且检查用于一组自动索引的键的列以产生对于该组中的每个自动索引的索引统计。

在自动化索引创建的上下文之外,如本文中所描述的,响应于例如请求在表格上创建索引并且使这些索引具体化的DDL命令,对于索引的每次创建,单独地执行索引统计。因此,通过对于表格上的多个自动索引执行表格扫描、而不是多次索引统计扫描,单次索引统计扫描减少了用于产生对于多个索引的索引统计的计算机资源(例如,处理时间、I/O)的使用。

在仅元自动索引被定义之后,执行仅编译资格取得以确定哪些仅元自动索引要具体化和测试执行。在仅编译资格取得中,对工作集合中的查询进行编译以确定仅元自动索引中的任何一个是否被选择用于通过编译产生的执行计划。图3A描绘了根据本发明的实施例的仅编译资格取得的过程。

参照图3A,对于工作集合中的每个查询,对该查询进行编译以产生执行计划(305)。对查询进行编译可以使用先前对于自动索引产生的索引统计。检查查询的查询执行计划以确定哪些自动索引被选择用于执行计划中(310)。

将被选择阈值次数的每个自动索引添加到取得编译资格的列表(320)。阈值次数可以是一次或多于一次。例如,如果阈值次数是两次,那么如果在仅编译资格取得期间,工作集合中的两个或更多个查询的执行计划选择了自动索引,则将该自动索引添加到取得编译资格的列表。

根据实施例,在查询的编译期间,可以执行动态采样声明以确定自动索引的键的一个或多个列上的任何谓词的选择性(315)。动态谓词采样的结果被用于确定是否使用自动索引。当动态采样声明被用于自动索引时,225处的索引统计的产生可以先发生。可替代地,在查询的编译期间,自动索引上的索引统计和查询采样声明都可以被使用。HakanJakobsson等人于2003年5月9日提交为美国专利申请No.10/435,228的美国专利No.7,213,012Optimizer Dynamic Sampling中描述了动态采样声明,这些专利和申请的全部内容通过引用并入本文。

在仅编译资格取得完成之后,使取得编译资格的索引具体化,以使得取得编译资格的自动索引可以被进行测试执行。

图3B描绘了使取得编译资格的自动索引具体化的过程。类似于用于产生索引统计扫描的单次扫描方法,单次表格扫描方法被用于产生用于表格的多个取得编译资格的自动索引。参照图3B,由取得编译资格的索引索引的一个或多个表格被确定,以使得单次索引创建扫描方法可以被应用。(350)

对于每个表格,执行单次索引创建扫描,从而为表格上的所有取得编译资格的自动索引产生索引数据(355)。执行扫描可能需要提取为表格的所有取得编译资格的自动索引形成索引数据所需的键值。一些类型的索引实际上不存储索引数据中的键值,而是需要对键值进行检查以确定如何创建索引。例如,位图索引可能需要在位图中设置与包含特定的键值的行相对应的位。

此外,在单次索引创建扫描期间,可以产生附加的索引统计。例如,当产生B树索引时,产生诸如以下的信息:B树的深度、非叶节点的数量、以及叶节点的数量。

在自动化索引创建的上下文之外,响应于例如请求在表格上创建和具体化索引的DDL命令,对于索引的每次创建,单独地执行索引创建扫描。因此,通过对表格上的多个索引执行的一次索引创建扫描方法、而不是多次索引创建扫描,本文中描述的单次索引创建扫描减少了使同一表格上的多个索引具体化所需的资源(例如,处理时间、I/O)。

基于执行计划的性能度量的估计,仅编译资格取得确立自动索引可以改进查询执行性能。测试执行核实确认自动索引实际上已经改进了查询的执行。

为了确定查询的执行是否有改进,为了比较的目的,需要关于查询的先前执行的性能度量。这样的信息从查询历史235获得。

图4A描绘用于测试执行核实的过程。参照图4A,确定测试执行工作集合的成员(405),这些成员是工作集合中的为其产生的执行计划在仅编译资格取得期间使用自动索引的查询。对测试执行工作集合中的查询执行测试执行核实。

对于测试执行工作集合中的每个查询,对查询进行测试执行以产生性能度量。将所述性能度量与存储在查询历史450中的关于查询的性能度量进行比较(415)。一般来说,用于比较的性能度量是查询历史450中的最近的执行计划的关于查询的性能度量。

基于所述比较,确定测试执行是使查询执行性能改进、还是劣化(420)。如果性能劣化,则对所述查询封锁测试执行中使用的取得编译资格的自动索引中的任何一个(425)。例如,对于查询的测试执行的执行时间可能大于查询历史450中的对于查询的执行时间,从而表明查询执行性能劣化。

根据本发明的实施例,使用“SQL lockdown”来封锁查询。SQL lockdown被构建在SQL管理对象的顶部。SQL管理对象影响DBMS编译查询的方式。查询的编译可以产生该查询的次优的执行计划。例如,编译可以产生查询的次优的执行计划,该次优的执行计划可以使用当不使用索引的另一个执行计划将更优时的该索引。

为了避免编译查询的次优的执行计划,对于该查询产生SQL管理对象,并且DBMS使用该SQL管理对象来影响查询如何被编译,这可以使用次优的执行计划来避免。可以通过监视查询的性能来自动地产生SQL管理对象。SQL管理对象是SQL简档的基础结构。MohamedZiauddin等人于2004年9月7日提交为美国专利申请No.10/936,205的美国专利No.7,664,730Method and system for implementing a SQL profile中描述了SQL简档的自动化产生,这些专利和申请的全部内容通过引用并入本文。

SQL封锁的重要特征是,SQL封锁使得能够进行DBMS的自动化地配置以改进特定于查询的层次上的性能。如果自动产生的SQL封锁使查询的性能劣化,则劣化限于该查询。

另一方面,配置变化(比如,创建索引)具有全系统效应。添加索引可能使许多查询的性能劣化。因此,重要的是,用于自动地创建自动索引的方法使用当对查询使用自动索引使该查询的性能劣化时、阻止这样做的措施。因此,如下面稍后说明的,SQL封锁被用于阻止自动化索引管理发现使查询的查询执行劣化的自动索引的使用。

一旦测试执行核实完成,就可以使通过测试执行核实表明已经改进阈值数量的查询的查询执行的任何取得编译资格的自动索引可用于查询的未来执行。图4B示出用于以这种方式使自动索引可用的过程。

参照图4B,对于每个取得编译资格的自动索引,确定该自动索引是否改进了阈值数量的查询的查询执行。如果没有改进,则丢弃该自动索引(455),从而从DBMS的数据库字典移除该自动索引,并且从数据库移除该自动索引的索引数据。所述阈值可以是一个或更多个。

如果确定自动索引改进了阈值数量的查询的查询执行,则使该自动索引可见。查询优化器可以考虑将自动索引用于除了工作集合中的查询之外的其他查询的任何未来执行。

测试执行核实核实自动索引改进了工作集合中的至少一个查询的执行。对于该自动索引没有改进的工作集合中的查询的执行,测试执行阻止该自动索引使该查询的执行劣化。然而,自动索引可能使不在工作集合中的查询的查询执行劣化。为了解决这个可能性,当自动索引最初被选择用于查询的执行计划时,对该查询核实查询执行性能。在对该查询核实的查询执行之前,该查询在此处被称为未被核实的查询。

为了确定自动索引可以劣化还是改进未被核实的查询的查询执行性能,使用首批核实。一般来说,在查询的编译产生使用自动索引的执行计划的头一次或多次之后,该自动索引被阻止用于该查询的后续编译中。对利用自动索引的该查询的执行进行评估,以确定该查询的查询执行是改进了、还是劣化了。如果改进了,则DBMS随后不阻止对于该查询使用该自动索引。如果劣化了,则对于该查询封锁该自动索引。因此,首批核实使由于自动索引而导致的查询执行劣化限于查询的一次或几次执行,同时当自动索引改进查询执行时,使该自动索引可用于执行查询。

在首批验证被执行的同时,DBMS可以检测查询执行正在运行比查询的前一次执行长得多。作为响应,首批验证可以停止查询的执行,封锁自动索引,然后在没有自动索引的情况下重新编译并且执行查询。

根据本发明的实施例,DBMS的共享游标机制被用于首批核实。共享游标机制使用共享游标池。参照图5说明共享游标机制,图5描绘使用共享游标机制的首批核实。

参照图5,图5描绘了共享游标池550。共享游标池存储可以被运行DBMS的数据库会话访问的共享游标。游标是通过编译产生的,并且包括查询的执行计划。游标是存储执行计划、关于查询和执行计划的编译的信息(诸如运算符树)以及合格索引的列表的数据结构。合格索引是表格和由查询引用的列上的、在编译时对于该查询合格的索引。当例如索引可以被用于评估键上的谓词、并且该索引可见且没有被封锁用于查询时,该索引对于该查询是合格的。

当查询被查询优化器编译时,查询优化器在共享游标池中查找该查询。如果存在用于该查询的共享游标,则存储在共享执行计划中的执行计划被用于该查询。对于查询以这种方式使用执行计划在此处被称为“软解析”。否则,查询优化器执行从“划痕”产生执行计划的“硬解析”。

当硬解析被执行时,用于查询的共享游标被存储在共享游标池550中。先前存储在共享游标池550中的任何先前共享的用于查询的游标被从共享游标池550移除。移除共享游标可能需要将共享游标标记为无效以阻止共享游标的使用。当查询优化器从用于查询的共享游标中的合格索引列表确定存在不在合格索引列表中的新索引时,可以执行硬解析。

然而,在首批核实中,当响应于检测到合格的新自动索引,执行硬解析时,共享游标池550中的先前的共享游标可能不被移除,以使得共享游标可以被用于查询的后一次执行。使用自动索引的共享游标(即,存储使用新的自动索引的执行计划的共享游标)可以被添加到共享游标池550,但是被标记为在验证中以阻止共享游标用于查询的另一次执行。如果新的执行计划的查询性能被验证为已经改进,则新的共享游标不被标记,并且先前的共享游标被移除。

还应注意到,当自动索引被创建或重新构建时,用于引用该自动索引的表格的查询的共享游标不被从共享游标池移除。这样的共享游标仍在可用于相应查询的共享游标中,包括在如上所示的首批核实期间。当不是自动索引的索引被创建或重新构建时,用于引用该索引的表格的查询的共享游标可以被从共享游标池移除。

图5描绘了使用共享游标机制的首批核实的示图。参照图5,对查询检测新的合格的自动索引。新的自动索引是通过在共享游标池550中检查用于所述查询的共享游标并且确定该自动索引不在共享游标中的合格索引列表中而被检测到的(505)。

对所述查询进行硬解析以产生使用所述自动索引的执行计划(510)。用于所述查询的新的共享游标和新的执行计划被存储在共享游标池550中,并且被标记为在验证中。使用新的执行计划与所述自动索引来执行所述查询。通过执行所述查询来产生性能度量(520)。

在所述查询正利用新的执行计划被执行的同时,所述查询再次被编译以用于所述查询的另一次执行。在编译期间检测新的共享游标的未被核实的状态。(560)作为响应,忽略新的共享游标,并且使用先前的共享游标中的先前的执行计划来执行所述查询(565)。

在新的执行计划被执行之后,确定执行性能是已经劣化、还是改进。检索先前的执行计划的性能度量,并且将这些性能度量与新的执行计划的性能度量进行比较。

如果执行性能劣化,则对于所述查询封锁所述自动索引(530)。从共享游标池移除新的共享游标(535)。

如果执行性能改进,则从共享游标池550移除先前的共享游标。(540)新的共享游标被取消标记为在验证中。所述查询的后续执行因此可以使用新的共享游标,并且实现改进的查询执行性能。

当查询的编译第一次使用新的自动索引并且没有用于所述查询的共享游标时,构建新的共享游标,并且将该共享游标标记为在验证中。在该情况下,可以通过检查查询历史235来确定自动索引曾经是否被用于所述查询。

当另一个数据库会话编译同一查询时,不使用被标记为在验证中的共享游标。构建不使用新的自动索引的新的游标,该游标继而可以被执行同一查询的其他用户共享。

执行管理自动索引使用以停用不被使用和/或不被频繁使用、或者提供不足的成本收益或者不提供成本收益的自动索引。这样的自动索引在此处被称为低价值自动索引。自动索引可以变为低价值自动索引,因为例如在一段时间段期间自动产生的SQL封锁可以阻止自动索引的使用。索引统计的变化也可以是一个原因。其他因素包括:表格数据的容量的变化、索引键列的分布的变化、应用中的变化、数据模型(或方案)中的变化。停用自动索引需要使自动索引不可见和/或使自动索引去具体化(dematerialize)。此外,自动索引可以被丢弃,从而从DBMS的数据库字典移除该自动索引。

停用自动索引可以节约否则将被自动索引的索引数据占据的存储空间。此外,停用自动索引减少当编译查询时考虑的索引的数量,这减少了查询编译时间和工作。此外,停用自动索引降低修改表格的维护成本。

在实施例中,被停用的自动索引仍是具体化的,但是不被维护。然而,该自动索引对于自动化索引创建是合格的。在这种情况下,对于查询的测试执行,已经具体化的索引可以被递增地重新构建以降低使自动索引具体化的成本。

图6描绘了作为管理自动索引使用的一部分执行的活动。参照图6,监视自动索引使用(605)。通过周期性地检查查询历史235来监视自动索引使用。基于所述检查,确定自动索引是否已经在阈值时间段内没有被使用。响应于该确定,停用所述自动缩影(615)。

例如,DBMS可以在查询历史235中检查使用特定的自动索引的执行计划。基于所述检查,确定最近执行的执行计划的最近执行时间过去至少阈值时间段。响应于该确定,停用所述自动索引。

就以下各方面监视自动索引的使用:自动索引被用于的查询的数量、受益于自动索引的查询的数量和频率、以及净收益(在所有查询上,有自动索引的处理时间和没有自动索引的处理时间之差)。使用通过监视收集的度量来对自动索引进行排名(620)。排名可以基于使用自动索引的查询的数量、受益于索引的查询的数量和频率、以及使用自动索引的所有查询上的总净收益。在自动索引被用于的所有查询上具有阈值最低排名和/或净收益不足的自动索引可以被停用。

在实施例中,对自动索引估计的收益导致维护该自动索引。维护索引的成本具有三个组成部分:(1)存储空间;(2)创建该索引的CPU和IO时间;(3)维护该自动索引的CPU和IO成本。头两个组成部分是一次性成本。每当表格被修改时,就引发索引的维护成本。索引的成本在预定时间段(例如,一周)上使用以下步骤测得:

(1)当使自动索引可用时,创建记录表格中被插入、删除和更新的行的数量的计数器在时间T1时的快照。

(2)在时间T2预定时间段之后创建所述计数器的另一个快照。

(3)使用以下公式计算维护成本:

(INSERT_COUNT(T1)-INSERT_COUNT(T0))*INSERT_COST+

DELETE_COUNT(T1)-DELETE_COUNT(T0))*DELETE_COST+

UPDATE_COUNT(T1)-UPDATE_COUNT(T0))*UPDATE_COST)

INSERT_COST、DELETE_COST和UPDATE_COST分别是被确定为表示行的插入、删除或更新的维护索引的成本的常数。

基于查询历史235的检查,可以确定自动索引在规律地出现的时间窗口(“规律的活动窗口”)期间被使用(630)。例如,自动索引可以被用于每月运行以产生每月报告的查询。基于查询历史235的评估,DBMS可以确定查询总是在一个月开始的窗口时间内被执行。所述窗口时间是用于自动索引的规律的活动窗口。

响应于自动索引仅在规律的活动窗口期间被使用的确定,自动索引被实现为及时(JIT)自动索引(635)。为了实现JIT自动索引,DBMS产生激活和停用JIT自动索引的“JIT时间表”。该时间表正好在其规律的活动窗口之前激活JIT自动索引,并且正好在规律的活动窗口之后停用自动索引。

图6B描绘JII自动索引的规律地调度的激活和停用。参照图6B,响应于到达JIT时间表对于JIT自动索引定义的规律的活动窗口的开头,确定激活JIT自动索引(650)。

响应于确定激活JIT自动索引,激活JIT自动索引,这需要使JIT自动索引具体化,并且使JIT自动索引可见(655)。如所预计的,自动索引在活动窗口期间被使用(660)。

响应于到达规律的活动窗口的末尾,确定停用JIT自动索引(665)。响应于确定停用JIT自动索引,停用JIT自动索引(670)。

JIT自动索引的收益是当被停用时,JIT自动索引不被维护,从而降低修改表格的成本。JIT索引只有在被激活时才被维护。

在数据库即服务(DBaaS)中,消费者使用正在云基础设施内运行的数据库服务器或DBMS。有利地,DbaaS提供商管理或控制底层的云基础设施、应用和服务器,包括一个或多个数据库服务器。DbaaS可以是成本非常有效的,节省了消费者大量时间和开销。

一种用于实现DBaaS的强大平台是在本文中被称为下面描述的容器DBMS(CDBMS)的多租户架构。为了进一步提高DbaaS的有效性,自动化索引管理可以被提供为CDBMS上的服务。

图7A描绘了可以在其上实现本发明的实施例的CDBMS的例子。参照图7A,CDBMS700包括数据库服务器702和容器数据库704。下面描述的“数据库系统概述”和“硬件概述”章节中描述了数据库服务器和数据库服务器可以在其上运行的计算机系统的例子,但是实施例不仅限于这些平台。

图7B描绘了根据实施例的容器数据库704的更详细的视图。容器数据库704包含由数据库服务器702托管和管理的多个数据库。数据库包括根数据库710和插接式数据库(PDB)720至740。根数据库710是被数据库服务器702用于全局地管理容器数据库700并且存储元数据的数据库,元数据定义插接式数据库和/或定义可以被针对属于同一容器数据库的不同插接式数据库运行的数据库会话共享的常见数据库对象。

每个插接式数据库包括它自己的数据库字典。PDB 720包括数据库字典721,PDB730包括数据库字典731,PDB 740包括数据库字典741。插接式数据库的数据库字典在本文中可以被称为插接式数据库字典。由插接式数据库字典定义的非常见数据库对象的数据库对象在本文中被称为插接式数据库对象。由数据库字典721定义的插接式数据库对象722是属于PDB 720并且不被其他PDB共享的数据库对象。类似地,数据库字典731定义属于PDB730的插接式数据库对象732,数据库字典741定义属于PDB 740的插接式数据库对象742。

根数据库710促进的一个功能是在容器数据库700内定义插接式数据库。类似于插接式数据库,根数据库710包括数据库字典711。数据库字典711包含元数据,该元数据定义容器数据库700的管理容器数据库700和其中包含的插接式数据库所需的各方面,包括定义PDB 720、PDB 730和PDB 740的元数据。

自动化索引管理使用计算机资源。为了确保自动化索引管理具有足够的计算机资源、或者不会由于消耗太多的计算机资源而引起不期望的开销量,自动化索引管理所使用的计算机资源由CDBMS 700的资源管理能力管理。通过该能力,CDBMS 700可以管理由对PDB720、PDB 730和PDB 740中的任何一个执行自动化索引管理的数据库进程使用的资源。TeckHua Lee等人于2016年8月29日提交的美国专利申请No.15/249,979Efficient HybridParallelization For In-memory Scans中描述了用于管理DBMS中的资源的资源管理机制,该申请的全部内容通过引用并入。Ravi Shankar Thammaiah等人于xx/xx/xx提交的美国专利申请No.xx/xxx,xxx Intelligent pooling of isolated hierarchical runtimesfor cloud scale databases中描述了用于管理用于PDB的资源的资源管理机制,该申请的全部内容通过引用并入。

用于自动化索引管理的资源管理可以使用“共享分配方法”来执行。根据共享分配方法,一定配额的计算机资源被分配给特定的PDB,并且该配额的一部分被分配给对PDB执行自动化索引创建的后台数据库进程。例如,在CDBMS 700内,PDB 720被分配12个CPU核的配额。执行自动化索引创建的后台数据库进程被分配这些12个CPU中的1个的配额。

在“解除分配方法”中,对主要PDB的单独的PDB复制件执行自动化索引管理。由自动化索引管理创建的自动索引被传播给主要PDB。图8是描绘解除分配方法的示图。

参照图8,PDB 730是快照数据库副本PDB 720,因此在本文中被称为快照PDB。最初,当PDB 730被创建为快照数据库副本时,快照PDB 730占据非常小的存储。当对快照PDB730或PDB 720做出改变时,包括快照数据库副本和基本数据库之间的差异的delta被创建。具体地说,快照数据库副本包括指向基本数据库中的数据块(或数据块的范围)的指针,并且当最初被创建时,快照数据库副本几乎完全包括指向数据块的指针。所述delta可以包括存储对快照数据库副本或基本数据库的改变的数据块。因此,在做出所述改变之后,快照数据库副本包括指向基本数据库中的数据块的指针、以及delta的至少一部分。因为指针和delta可以一起包括远少于基本数据库的完全具体化的副本的数据,所以当创建快照数据库副本时,节省了显著的存储。Margaret Susairaj等人于2014年6月24日提交的美国申请No.14/313,926Storage Integrated Snapshot Cloning For Database中描述了在CDBMS中创建快照数据库副本,该申请的全部内容通过引用并入本文。

在图8中,针对PDB 720运行的数据库进程被分配12个CPU核的配额,而针对快照PDB 730运行的数据库进程被分配1个核的配额。图8中未示出的其他配额的计算机资源被分配,诸如存储器和块存储。

针对快照PDB 730运行的后台进程805使用PDB 720中的查询历史来执行自动化索引创建,以在快照PDB 730中创建自动索引。通过测试执行核实表明已经改进了查询的自动索引在PDB 720中的后台进程805中被创建。针对PDB 720运行的数据库进程执行首批核实。

为了使得自动化索引创建针对PDB 720的最近的、因此准确的副本运行,快照PDB730实际上可以被周期性地刷新。快照PDB 730通过将快照PDB 730创建为新的快照数据库副本而被刷新,该步骤可以被几乎瞬间执行,因为快照数据库副本不需要使基本数据库中的数据的副本具体化。

本发明的实施例被用于DBMS的上下文下。因此,提供了示例DBMS的描述。

一般来说,服务器(诸如数据库服务器)是集成的软件组件与计算资源(诸如存储器、节点和该节点上用于执行集成的软件组件的处理)的分配的组合,其中,所述软件和计算资源的组合专用于代表服务器的客户端提供特定类型的功能。数据库服务器管控并且促进对于特定数据库的访问,处理客户端访问数据库的请求。

用户通过向数据库服务器提交使数据库服务器对存储在数据库中的数据执行操作的命令来与DBMS的数据库服务器交互。用户可以是在与数据库服务器交互的客户端计算机上运行的一个或多个应用。多个用户在本文中也可以被统称为用户。

数据库包括数据和存储在持久存储器机构(诸如一组硬盘)上的数据库字典。数据库由它自己的单独的数据库字典定义。数据库字典包括定义数据库中包含的数据库对象的元数据。实际上,数据库字典定义整个数据库。数据库对象包括表格、表格列和表格空间。表格空间是用于存储各种类型的数据库对象(诸如表格)的数据的一个或多个文件的集合。如果数据库对象的数据被存储在表格空间中,则数据库字典将数据库对象映射到保存该数据库对象的数据的一个或多个表格空间。

数据库字典被DBMS引用以确定如何执行提交给DBMS的数据库命令。数据库命令可以访问由所述字典定义的数据库对象。

数据库命令(例如,查询)可以为数据库声明的形式。为使数据库服务器处理数据库声明,数据库声明必须符合数据库服务器支持的数据库语言。许多数据库服务器支持的数据库语言的一个非限制性例子是SQL,SQL包括诸如Oracle这样的数据库服务器支持的专有形式的SQL(例如,Oracle Database 11g)。SQL数据定义语言(“DDL”)指令被发给数据库服务器以创建或配置数据库对象,诸如表格、视图或复杂类型。数据操纵语言(“DML”)指令被发给DBMS以管理存储在数据库结构内的数据。例如,SELECT、INSERT、UPDATE和DELETE是在一些SQL实现中找到的DML指令的常见例子。SQL/XML是当操纵对象-关系数据库中的XML数据时使用的SQL的常见扩展。

多节点数据库管理系统由共享对于同一数据库的访问权限的互连的节点构成。通常,节点经由网络互连,并且不同程度地共享对于共享的存储的访问权限,例如,对于一组盘驱动器和存储在其上的数据块的共享访问权限。多节点数据库系统中的节点可以为经由网络互连的一组计算机(例如,工作站、个人计算机)的形式。可替代地,节点可以是由服务器刀片的形式的节点组成的网格的节点,所述服务器刀片与机架上的其他服务器刀片互连。

多节点数据库系统中的每个节点托管数据库服务器。服务器(诸如数据库服务器)是集成的软件组件与计算资源(诸如存储器、节点和该节点上的用于在处理器上执行集成的软件组件的处理)的分配的组合,所述软件和计算资源的组合专用于代表一个或多个客户端执行特定的功能。

来自多节点数据库系统中的多个节点的资源可以被分配给运行特定的数据库服务器的软件。软件和来自节点的资源的分配的每个组合是在本文中被称为“服务器实例”或“实例”的服务器。数据库服务器可以包括多个数据库实例,其中一些或全部正在单独的计算机(包括单独的服务器刀片)上运行。

一般来说,查询编译查询声明,并且产生该查询声明的内部查询表示。通常,内部查询表示是互联的数据结构,这些数据结构表示查询声明的各种组件和结构。内部查询表示可以为节点图的形式,每个互联的数据结构对应于节点和所表示的查询声明的组件。内部表示通常在存储器中产生以供查询优化器评估、操纵和变换。

术语“查询”在本文中用于指代表示查询的任何形式,包括数据库声明的形式或内部查询表示的形式的查询。查询优化器可以从除了查询解析器之外的另一个实体接收查询,其中,接收的查询为内部查询表示的形式。

查询优化器为查询产生一个或多个不同的候选执行计划。查询优化器对所述一个或多个候选执行计划进行评估以确定哪个应被用于计算查询。

执行计划可以用互联的节点(在本文中被称为运算符)的图表示,每个运算符对应于执行计划的步骤,在本文中被称为执行计划操作。所述图(即,定向树)的层次结构表示执行执行计划操作的次序、以及数据如何在执行计划操作中的每个之间流动。执行计划操作包括,例如,表格扫描、索引扫描、散列联接、排序合并联接、嵌套循环联接和过滤。

编译查询需要对查询进行变换。一般来说,对查询进行变换涉及将查询重写成生成相同结果并且可能被更高效地执行的另一个查询,即,可以为其产生可能更高效的且成本更低的执行计划的查询。查询变换的例子包括视图合并、子查询去嵌套、过滤谓词四处移动和下推、公共子表达消去、外到内联接转换、具体化视图重写、星形变换、以及联接谓词下推。通过操纵查询表示的深度副本以形成表示变换查询的变换查询表示来重写查询。变换的查询在本文中被称为变换查询;其副本被变换的查询被称为基本查询。

查询编译还可以执行多于一个的变换用于评估。对查询产生的每个变换查询被称为候选变换查询或候选查询。被重写以产生另一个变换查询的变换查询在本文中被称为所述另一个变换查询的基本查询。查询优化器最初接收的查询被称为原始查询。

优化器优化的原始查询和为查询产生的替代的变换查询单独地被称为“候选查询”,并且被统称为“查询搜索空间”。为查询搜索空间中的每个查询产生的一个或多个候选执行计划被统称为“计划搜索空间”。

根据一个实施例,本文中描述的技术由一个或多个专用计算设备实现。所述专用计算设备可以被硬连线来执行所述技术,或者可以包括被持久地编程为执行所述技术的数字电子设备,诸如一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA),或者可以包括被编程为按照固件、存储器、其他储存器或组合中的程序指令执行所述技术的一个或多个通用硬件处理器。这样的专用计算设备还可以将自定义的硬连线逻辑、ASIC或FPGA与自定义的编程相组合来实现所述技术。所述专用计算设备可以是台式计算机系统、便携式计算机系统、手持设备、联网设备、或含有实现所述技术的硬连线的和/或程序逻辑的任何其他设备。

例如,图9是例示说明在其上可以实现本发明的实施例的计算机系统900的框图。计算机系统900包括用于传送信息的总线902或其他通信机制,以及与总线902耦合的用于处理信息的硬件处理器904。硬件处理器904可以例如是通用微处理器。

计算机系统900还包括耦合到总线902、用于存储信息和将被处理器904执行的指令的主存储器906,诸如随机存取存储器(RAM)或其他动态存储设备。主存储器906还可以被用于存储将被处理器904执行的指令执行期间的临时变量或其他中间信息。这样的指令在被存储在处理器904可访问的非暂时性存储介质中时,使计算机系统900变为被定制为执行所述指令中指定的操作的专用机器。

计算机系统900进一步包括耦合到总线902的用于存储用于处理器904的信息和指令的只读存储器(ROM)908或其他静态存储设备。存储设备910(诸如磁盘、光盘或固态驱动器)被提供,并且被耦合到总线902,用于存储信息和指令。

计算机系统900可以经由总线902耦合到用于向计算机用户显示信息的显示器912,诸如阴极射线管(CRT)。输入设备914(包括字母数字键和其他键)耦合到总线902,用于将信息和命令选择传送给处理器904。另一类型的用户输入设备是用于将方向信息和命令选择传送给处理器904并且用于控制显示器912上的光标移动的光标控件916,诸如鼠标、轨迹球或光标方向键。该输入设备通常具有两个轴(第一个轴(例如,x)和第二个轴(例如,y))上的两个自由度,这两个自由度使得该设备可以指定平面中的位置。

计算机系统900可以使用与该计算机系统组合以使计算机系统900成为专用机器或者将计算机系统900编程为专用机器的定制硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实现本文中描述的技术。根据一个实施例,本文中的技术由计算机系统900响应于处理器904执行主存储器906中包含的一个或多个指令的一个或多个序列而执行。这样的指令可以从另一个存储介质(诸如存储设备910)读取到主存储器906中。主存储器906中包含的指令序列的执行使处理器904执行本文中描述的处理步骤。在替代实施例中,硬连线的电路系统可以被用来代替软件指令或者与软件指令组合。

如本文中使用的术语“存储介质”是指存储使机器以特定方式操作的数据和/或指令的任何非暂时性介质。这样的存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘、磁盘或固态驱动器,诸如存储设备910。易失性介质包括动态存储器,诸如主存储器906。常见形式的存储介质例如包括:软盘、柔性盘、硬盘、固态驱动器、磁带、或任何其他的磁性数据存储介质,CD-ROM、任何其他的光学数据存储介质,具有孔图案的任何物理介质,RAM、PROM、以及EPROM、FLASH-EPROM、NVRAM、任何其他的存储器芯片或盒。

存储介质不同于传输介质,但是可以与传输介质结合使用。传输介质参与在存储介质之间传送信息。例如,传输介质包括同轴电缆、铜线和包括导线的光纤,所述导线包括总线902。传输介质还可以采取声波或光波的形式,诸如在无线电波和红外数据通信期间产生的那些声波或光波。

各种形式的介质可以涉及将一个或多个指令的一个或多个序列运送给处理器904以供执行。例如,所述指令可以一开始被承载在远程计算机的磁盘或固态驱动器上。所述远程计算机可以将所述指令加载到其动态存储器中,并且通过使用调制解调器在电话线上发送所述指令。计算机系统900本地的调制解调器可以在电话线上接收数据,并且使用红外发射器将该数据转换为红外信号。红外检测器可以接收红外信号中承载的数据,并且适当的电路系统可以将该数据放置在总线902上。总线902将所述数据运送给主存储器906,处理器904从主存储器906检索并且执行所述指令。主存储器906接收的指令可以可选地在被处理器904执行之前、在被处理器904执行之后被存储在存储设备910上。

计算机系统900还包括耦合到总线912的通信接口918。通信接口918提供与网络链路920的双向数据通信耦合,网络链路920连接到本地网络922。例如,通信接口918可以是综合服务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器、或提供与对应类型的电话线的数据通信连接的调制解调器。作为另一个例子,通信接口918可以是提供与可兼容的LAN的数据通信连接的局域网(LAN)卡。无线链路也可以被实现。在任何这样的实现中,通信接口918发送和接收承载表示各种类型的信息的数字数据流的电信号、电磁信号或光学信号。

网络链路920通常通过一个或多个网络提供与其他数据设备的数据通信。例如,网络链路920可以通过本地网络922提供与主机计算机924或由互联网服务提供商(ISP)926运营的数据设备的连接。ISP926继而通过全球分组数据通信网络(现在常被称为“互联网”)928提供数据通信服务。本地网络922和互联网928这二者都使用承载数字数据流的电信号、电磁信号或光学信号。通过各种网络的信号和在网络链路920上且通过通信接口918的信号(这些信号与计算机系统900来回运送数字数据)是示例形式的传输介质。

计算机系统900可以通过网络(一个或多个)、网络链路920和通信接口918发送消息和接收数据,包括程序代码。在互联网例子中,服务器930可以通过互联网928、ISP 926、本地网络922和通信接口918发送对于应用程序的请求代码。

接收的代码可以在它被接收到时被处理器904执行,和/或被存储在存储设备910或其他非易失性储存器中以供以后执行。

在前面的说明书中,已经参照在不同实现之间可以有所变化的许多特定的细节描述了本发明的实施例。说明书和附图因此要从说明性的意义、而不是限制性的意义上来看待。本发明的范围的唯一的且排他的指示、以及申请人意图什么是本发明的范围,是从本申请发表的一组权利要求的字面意义的和等同的范围,这些权利要求是以这样的权利要求发表的特定形式(包括任何后续纠正)从本申请发表的。

图10是可以用于控制计算机系统900的操作的基本软件系统1000的框图。软件系统1000及其组件(包括它们的连接、关系和功能)意图是仅示例性的,并不意图限制示例实施例(一个或多个)的实现。适合于实现示例实施例(一个或多个)的其他的软件系统可以具有不同的组件,包括具有不同的连接、关系和功能的组件。

提供软件系统1000是为了指导计算机系统900的操作。可以被存储在系统存储器(RAM)906中和固定储存器(例如,硬盘或闪存)910上的软件系统1000包括内核或操作系统(OS)1010。

OS 1010管理计算机操作的低层次方面,包括管理进程的执行、存储器分配、文件输入和输出(I/O)和设备I/O。被表示为1002A、1002B、1002C…1002N的一个或多个应用程序可以被“加载”(例如,从固定储存器910传送到存储器906)以供系统1000执行。意图在计算机系统900上使用的应用或其他软件也可以作为一组可下载的计算机可执行指令被存储,所述计算机可执行指令例如用于从互联网位置(例如,Web服务器、应用商店或其他在线服务)下载和安装。

软件系统1000包括用于以图形(例如,“点击”和“触摸手势”)的方式接收用户命令和数据的图形用户接口(GUI)1015。这些输入继而可以被系统100根据来自操作系统1010和/或应用(一个或多个)1002的指令采取行动。GUI 1015还用于显示来自OS 1010和应用(一个或多个)1002的操作结果,随之用户可以供应附加的输入或者终止会话(例如,退出登录)。

OS 1010可以直接在计算机系统900的裸硬件1020(例如,处理器(一个或多个)904)上执行。可替代地,管理程序或虚拟机监视器(VMM)1030可以插入在裸硬件1020和OS1010之间。在该配置中,VMM 1030充当计算机系统900的OS 1010和裸硬件1020之间的软件“缓冲”或虚拟化层。

VMM 1030使一个或多个虚拟机实例(“客户机”)实例化,并且运行这些虚拟机实例。每个客户机包括“客户”操作系统(诸如OS1010)和被设计为在客户操作系统上执行的一个或多个应用(诸如应用(一个或多个)1002)。VMM 1030向虚拟操作平台呈现客户操作系统,并且管理客户操作系统的执行。

在一些情况下,VMM 1030可以允许客户操作系统如同它正直接在计算机系统900的裸硬件1020上运行那样运行。在这些情况下,被配置为直接在裸硬件1020上执行的同一版本的客户操作系统也可以没有修改或重新配置地在VMM 1030上执行。换句话说,在一些情况下,VMM 1030可以向客户操作系统提供完全的硬件和CPU虚拟化。

在其他情况下,为了效率,客户操作系统可以被专门设计或配置为在VMM 1030上执行。在这些情况下,客户操作系统“意识到”他在虚拟机监视器上执行。换句话说,在一些情况下,VMM 1030可以向客户操作系统提供半虚拟化。

计算机系统处理包括硬件处理器时间的分配和(物理的和/或虚拟的)存储器的分配,存储器的分配用于存储硬件处理器执行的指令、用于存储硬件处理器执行所述指令而产生的数据、和/或用于存储当计算机系统处理不在运行时的硬件处理器时间的分配之间的硬件处理器状态(例如,寄存器的内容)。计算机系统在操作系统的控制下运行,并且可以在正在计算机系统上执行的其他程序的控制下运行。

术语“云计算”在本文中一般用于描述计算模型,该计算模型使得能够按需访问计算资源(诸如计算机网络、服务器、软件应用和服务)的共享池,并且使得可以用最小的管理工作或服务提供商交互快速地调配和释放资源。

云计算环境(有时被称为云环境或云)可以以各种不同的方式实现以最佳地适合不同的要求。例如,在公共云环境中,底层的计算基础设施为使得其云服务可供其他组织或一般公众使用的组织所有。相反,私有云环境一般仅意图供单个组织使用或者在单个组织内使用。社区云意图由社区内的几个组织共享,而混合云包括通过数据和应用可移植性绑定在一起的两种或更多种类型的云(例如,私有、社区或公共)。

一般来说,云计算模型能够实现以前可能由组织自己的信息技术部门提供的那些责任中的一些,改为被作为云环境内的服务层递送,以供消费者(要么在组织内,要么在组织外部,根据云的公共/私有性质)使用。根据特定的实现,每个云服务层提供的或每个云服务层内的组件或特征的精确的定义可以变化,但是常见例子包括:软件即服务(SaaS),其中消费者使用在云基础设施上运行的软件应用,而SaaS提供商管理或控制底层的云基础设施和应用。平台即服务(PaaS),其中消费者可以使用PaaS支持的软件编程语言和开发工具来开发、部署和以其他方式控制它们自己的应用,而PaaS提供商管理或控制云环境的其他方面(即,运行时执行环境下面的一切)。基础设施即服务(IaaS),其中消费者可以部署并且运行任意的软件应用、和/或调配处理、存储、网络和其他基本计算资源,而IaaS提供商管理或控制底层的物理云基础设施(即,操作系统层下面的一切)。DBaaS早前已被描述过。

相关技术
  • 自动化实时索引管理
  • 自动化基础设施管理系统以及用于实现实时能量管理的方法
技术分类

06120112678322