活动跟踪、数据分类和数据库内归档的技术的制作方法

文档序号:15117885发布日期:2018-08-07 21:58阅读:332来源:国知局

本文中呈现的技术涉及活动跟踪和数据库归档。



背景技术:

虽然在这个章节中描述的方案是可被要求保护的方案,但并非一定是先前已经被构想或要求保护的方案。因此,除非另外指明,否则不应该仅凭在这个章节中描述的方案出现在该章节中就假定这些方案中的任何一个是现有技术。

数据库系统

数据库管理系统(“DBMS”)管理数据库。数据库包括数据库数据和元数据,该数据库数据和元数据存储在诸如硬盘组的持久存储机构中。在DBMS中,数据存储在一个或多个数据容器中,每个容器容纳记录,并且每个记录内的数据被组织成一个或多个字段。在关系数据库系统中,数据容器被称作表,记录被称作行,字段被称作列。在面向对象数据库中,数据容器被称作对象类,记录被称作对象,字段被称作属性。然而,其它数据库架构可使用其它术语。

本发明不限于任何特定类型的数据容器或数据库架构。然而,为了解释的目的,这里使用的例子和术语将是通常与关系数据库关联的例子和术语。因此,术语“表”、“行”和“列”将在这里被用于分别指示数据容器、记录和字段。

数据库应用和客户端通过提交使得DBMS对存储在数据库内的数据执行操作的数据库命令来直接或间接与数据库进行交互。数据库命令可以是符合数据库语言的数据库语句的形式。用于表达数据库命令的一个示例性语言是结构化查询语言(SQL)。SQL数据定义语言(“DDL”)指令被发给DBMS以定义数据库结构,诸如表、视图或复杂数据类型)。例如,CREATE、ALTER、DROP和RENAME是在一些SQL实现中发现的DDL指令的公共例子。SQL数据操纵语言(“DML”)指令被发到DBMS以管理存储在数据结构内的数据。例如,SELECT、INSERT、UPDATE和DELETE是在一些SQL实现中发现的DML指令的公共例子。

尽管上述的例子基于Oracle的SQL,但是这里提供的技术不限于Oracle的SQL,不限于任何专有形式的SQL,不限于任何标准化版本或形式的SQL(ANSI标准),并且不限于任何特定形式的数据库命令或数据库语言。另外,为了简化这里所包含的解释,数据库命令或其它形式的计算机指令可被描述为执行动作,诸如创建表、修改数据、以及设置会话参数。然而,应该明白,命令自身不执行动作,而是DBMS在执行命令时执行对应的动作。从而,这里使用的这些语句意图是命令的速记符,所述命令在由DBMS执行时使得DBMS执行对应的动作。

在大多数情况下,DBMS执行数据库命令作为一个或多个事务,即在数据库上执行的不可分操作的集合。从而,在执行给定事务以后,数据库被留在所有该事务的操作已经被执行或者没有该事务的任何操作被执行的状态。尽管实现可不同,但是通过如下步骤执行大部分事务:1)开始事务;2)执行一个或多个数据操纵或查询;3)如果在执行过程中没有发生错误则提交事务;4)如果在执行过程中发生错误则回退事务。因此,DBMS可以维持日志,所述日志跟踪向数据库提交和/或未提交的变化。例如,在SQL的一些实现中,执行数据库命令向REDO和UNDO日志增加记录,这能够用于实现回退、数据库恢复机制以及诸如闪回查询的特征。

数据库归档

在政府和公司的组织中,产生和存储数据的速率不断增加。尽管一些业务数据几乎永远不会失去它的价值,但是大部分数据的有用性趋于随时间而下降,直到它对于几乎任何目的没有进一步价值。通常,业务信息的价值趋于在创建数据后不久达到最大并且只在短时段(至多几年)内保持活动,之后,数据对于业务的重要性以及数据的通常用途开始下降。然而,许多业务受到诸如法律授权的因素的限制,要求在数据的有用性期满很久以后仍然被保留。

结果,通常观察到,用户仅仅偶尔访问存储在数据库内的10%到20%那么少的数据。其余的80%到90%的数据几乎从不被用户访问,然而构成维持数据库所需的存储成本的大部分。更糟糕的是,随着数据库存储的数据量增加,更慢的全表扫描和拉长的应用升级导致性能下降。

从而,面对上升的存储成本和劣化的系统性能,企业已经寻求高效地管理它们的数据库的不活动数据的方法。目前,许多企业尝试通过采取第三方归档方案实现这个目标,这些第三方归档方案将不活动数据从数据库卸载并且存入档案存储器。尽管这个方案帮助减轻加速的数据产生的影响,但是采用第三方归档方案的企业趋于用大量其它问题替代一个问题。

作为一个问题,第三方归档方案趋于缺乏对数据库的格式和内容的深入认识。例如,许多第三方归档方案只在文件系统级下工作,因此只能够以文件为粒度进行归档。从而,尽管第三方归档方案可能能够卸载组成数据库的个体文件,但是第三方归档方案可能不能够选择性地卸载个体数据库元素。另外,第三方归档方案可基于文件级度量(诸如文件被访问的频度或近度(recency))检测不活动数据,但可能不能够以个体数据库元素为粒度检测不活动。因此,当数据库文件包含活动和不活动数据两者时,第三方归档方案可能不能够识别并且只归档不活动数据。将数据存储为平面文件的数据库实现(其中整个表或者甚至是整个数据库可以被容纳在文件系统上的单个大文件内)能够加重这个问题。

作为另一个问题,通常DBMS不能够访问已经被从数据库卸载出去的数据。因此,在DBMS能够提供命令以查询或操纵归档数据之前,归档数据需要被重新加载回到数据库。此外,在一些情况下,由于归档数据被卸载,所以数据库的在线模式可能已经改变,从而需要在重新整合到数据库之前向归档数据传播这些变化的额外开销。结果,第三方归档方案通常不允许用户在需要时无缝地访问归档数据。

附图说明

在附图中通过举例而非限制的方式示出本发明,其中相同标号表示相同元素,其中:

图1是示出可实现本发明的实施例的操作环境的框图。

图2是示出DBMS对数据库表执行实时行级活动跟踪的流程图。

图3示出了根据一个实施例的已经启用活动跟踪之后的表。

图4是示出根据一个实施例的DBMS为读执行批量行级活动跟踪的流程图。

图5是示出根据一个实施例的DBMS执行元数据行级活动跟踪的流程图。

图6是描绘根据一个实施例的DBMS执行对象级活动跟踪的流程图。

图7示出了根据一个实施例的在已经启用数据库内归档之后的表。

图8是示出可以实现本发明的实施例的计算机系统的框图。

具体实施方式

在下面描述中,为了解释的目的,为了提供对本发明的透彻理解,阐述了大量的具体细节。然而,在没有这些具体细节的情况下仍然可以实施本发明,这是显然的。在其它实例中,为了避免不必要地使本发明模糊,以框图形式显示了公知结构和装置。

这里根据下面的大纲描述实施例:

1.0总览

2.0操作环境

3.0活动跟踪

3.1启用和禁用活动跟踪

3.2活动跟踪的使用

3.3实时行级活动跟踪

3.4批量行级活动跟踪

3.5元数据行级活动跟踪

3.6对象级活动跟踪

4.0数据分类

4.1数据分类存储

4.2自动数据分类

4.3手动数据分类

4.4行级可见性控制

5.0数据库内归档

6.0硬件总览

7.0第一附加公开

8.0第二附加公开

9.0第三附加公开

1.0总览

在一个实施例中,DBMS支持识别并归档不活动数据的技术,而不是依赖第三方归档方案。在概念上,这里描述的许多技术能够划分成三个种类,即活动跟踪、数据分类和数据库内归档。活动跟踪是指收集关于用户访问模式的统计量(诸如用户访问特定数据库元素的频度或近度)的技术。通过活动跟踪收集的统计量能够被提供给数据分类技术,以将数据库元素自动分类或者帮助用户将数据库元素手动分类。然后,一旦数据库元素被分类,则能够采用数据库内归档技术以基于分类将数据库元素移到不同存储层。然而,尽管关于活动跟踪、数据分类和数据库内归档的技术可以如上所述被一起使用,但是每个技术也可以被独立地实施。例如,通过活动跟踪收集的统计量可用于数据库归档之外的各种目的。

在一个实施例中,DBMS向数据库表增加一个或多个活动列,其中,所述一个或多个活动列中的每一个与活动集的特定活动关联。响应于接收到访问数据库表的一个或多个行的数据库命令,DBMS确定数据库命令执行的一个或多个活动。DBMS采用针对所述一个或多个行中的每一个的活动信息更新所述一个或多个活动列中的活动列,其中,所述活动列与所述一个或多个活动中的至少一个活动关联。

在一个实施例中,DBMS响应于接收到访问数据库的一个或多个数据库元素的数据库命令,确定数据库命令执行的一个或多个活动。DBMS在与所述一个或多个活动对应的一个或多个位映射中标记所述一个或多个数据库元素。响应于确定指定的时段已经流逝,DBMS向位映射日志增加所述一个或多个位映射。

在一个实施例中,DBMS将多个生命周期状态值中的每一个与多个存储层中的不同存储层关联。DBMS向数据库表的一个或多个行增加生命周期状态列,其中,生命周期状态列为所述一个或多个行中的每一个指定生命周期状态值。DBMS接收采用针对特定行的特定生命周期状态值更新生命周期状态列的命令。DBMS将所述特定行移动到与所述特定生命周期状态关联的存储层。

在其它实施例中,本发明包括被构造为执行上述步骤的计算机设备和计算机可读介质。

2.0操作环境

图1是示出可实施本发明的实施例的操作环境的框图。这里描述的技术可在DBMS 101上实施以帮助管理在诸如表102的数据库100上的数据的存储。表102包括与行103-111对应的多个记录。表102中的每行具有与列112-114对应的多个字段(包括名称的字段(列112)、居住城市的字段(列113)和居住状态的字段(列114))。尽管在图1中没有示出,但是数据库100实际上可包含能够由DBMS 101管理的许多其它的数据库表、数据库对象、数据和元数据。然而,为了示出清楚的例子,将主要参照表102解释这里描述的技术。

在一个实施例中,DBMS 101在与数据库100通信耦合的一个或多个计算装置上实施。下面在“硬件总览”中描述可实施DBMS 101的计算装置的例子。DBMS 101可诸如通过计算机总线直接通信耦合到数据库100,或者经由一个或多个局域网(LAN)和/或广域网(WAN)间接地通信耦合到数据库100。在一个实施例中,DBMS 101经由互联网通信耦合到数据库100。

在一个实施例中,在一个或多个存储装置(诸如硬盘驱动器阵列、随机存取存储器(RAM)、磁带驱动器、闪存驱动器、光学驱动器或者它们的组合)上实施数据库100。然而,除以上所列那些之外的存储装置也可用于实施数据库100。此外,尽管在图1中数据库100被描绘为单个实体,但是在一些实施例中,数据库100可被分布在位于许多不同物理位置处的许多不同存储装置上。在这些实施例中,DBMS 101也可以分布在许多不同物理位置处或者与图1中未描绘的其它DBMS进行通信,以便统一管理数据库100。

3.0活动跟踪

在一个实施例中,DBMS 101采用收集关于用户如何访问数据库100的各种元素的度量的技术。为了简化下面的解释,这些技术将被统一称作“活动跟踪”。在一些情况下,DBMS 101以行级粒度执行活动跟踪。例如,DBMS 101可以维持指示对每一行执行特定活动(诸如读或写)的最后时间的时间戳。在其它情况下,DBMS 101以对象级粒度执行活动跟踪。例如,DBMS 101可以维持指示用户访问数据库对象(诸如表、视图和索引)的频度或近度的度量。在下面的关于活动跟踪的章节中,将描述涉及通常活动跟踪的技术和对行级和对象级活动跟踪特定的技术。

3.1活动跟踪的使用

如将在后面的章节中更加详细地进行描述的,活动跟踪能够用于帮助识别不活动数据以用于手动或自动归档。然而,数据归档不是可采用通过活动跟踪收集的度量的唯一目的。例如,诸如乐观锁定的数据库特征需要在给定事务期间在事务提交之前确定行是否已经由另一个用户修改的能力。在一些实施例中,这里所述的技术允许DBMS 101维持指示行被更新的最后时间的时间戳。从而,通过检查时间戳,DBMS 101能够确定从事务开始起另一个用户是否修改了行。结果,尽管活动跟踪能够与数据归档并发使用,但是活动跟踪还能够被实施为分立的和独立的特征。

3.2启用和禁用活动跟踪

在一些实施例中,活动跟踪是DBMS 101能够根据需要启用或者禁用的可选特征。作为一个例子,DBMS 101可以支持允许用户对于数据库100全局地设置指示活动跟踪是被启用还是禁用的元数据(诸如标记)的数据库命令。作为另一个例子,DBMS 101可以支持允许用户启用或禁用针对特定的一组数据库对象(诸如表)的活动跟踪的数据库命令。从而,DBMS 101可以维持指示活动跟踪当前被启用的数据库对象的元数据(诸如针对每个数据库对象的标记或者对象引用的列表)。对于既实施对象级活动跟踪又实施行级活动跟踪的实施例,数据库命令可允许用户针对可应用数据库对象指定哪个或者哪些类型的活动跟踪将被启用。然而,在替代实施例中,DBMS 101可以支持至少两个不同数据库命令,一个数据库命令控制行级活动跟踪,另一个数据库命令控制对象级活动跟踪。

在一个实施例中,DBMS 101在缺省状态下禁用活动跟踪。从而,除非用户明确地激活,否则DBMS 101避免与活动跟踪关联的处理和存储开销。然而,在其它实施例中,DBMS 101在缺省状态下启用活动跟踪。从而,除非用户明确地停用,否则DBMS 101收集关于对数据库100执行的活动的度量。

3.3实时行级活动跟踪

在一些情况下,利用通过活动跟踪收集的度量的应用和特征需要对何时已经针对数据库100的行103-111执行了活动的细粒度的并且最新的指示。作为一个例子,上述的乐观锁定特征是时间敏感的。如果DBMS 101以粗级别的粒度或者以延迟方式收集指示何时行被更新的度量,则存在如下风险:在当前事务提交之前另一个用户可能已经更新了行,而DBMS 101没有注意到该更新。从而,在一个实施例中,随着实时地执行活动,DBMS 101内联式(in-line)存储度量作为表102的一部分并且更新度量。为了方便的目的,在这个章节中描述的技术将被称作“实时行级活动跟踪”。

如这里所用,活动信息包括指示在一个或多个时段内访问数据库元素的频度或近度或者它们的组合的关于该数据库元素的一个或多个度量。访问是指读、改变或创建数据库元素,而没有限制。活动信息的例子包括:(1)指示行在何时被插入、最后更新和/或最后读的时间戳,或者指示包含该行的表或表的一部分在何时被访问的时间戳;以及(2)指示在上周、两周中的每周或者上个月、上个季度等内访问行的频度的度量。

图2是示出DBMS对数据库表执行实时行级活动跟踪的流程图。为了示出清楚的例子,假定DBMS 101遵照图2所示的流程图以对表102执行实时行级活动跟踪。

在框200,DBMS 101对表102启用行级活动跟踪。在一些实施例中,使用以上在“启用和禁用活动跟踪”中提及的技术中的任何一个技术来启用行级活动跟踪。

在框201,DBMS 101向表102增加一个或多个活动列。由DBMS 101增加的活动列中的每一个表示可对表102的行103-111执行的特定类型的活动。例如,活动可包括行的读、写、和/或创建。DBMS 101使用活动列存储与关联活动相关的每行的度量。在一个实施例中,活动列用于存储指示已经对每行执行关联活动的最后时间的时间戳。在其它实施例中,活动列存储指示已经对每行执行关联活动的次数的频度计数。在其它实施例中,活动列存储与频度和近度两者相关的度量,诸如在特定时段(例如过去的一天)内对每列已经执行关联活动的次数。为了提供清楚的例子,图3示出了根据一个实施例的已经启用活动跟踪以后的表102。在图3中,DBMS 101已经向表102增加了活动列300、301和302,活动列300、301和302分别表示读行、写行和创建行的活动。每个活动列存储指示对每行执行关联活动的最后时间的时间戳。从而,活动列300存储指示读每行的最后时间的时间戳,活动列301存储指示更新每行的最后时间的时间戳,活动列302存储指示每行何时被增加到表102的时间戳。在其它实施例中,跟踪的活动或者在活动列内维持的度量可与图3所描绘的实施例不同。时间戳是表示特定时间或时间帧的任何数据。从而,在其它实施例中,DBMS 101可以为时间戳使用除日历日期之外的格式(诸如协调世界时(UTC))或者比日历日宽广或精细的粒度级别。

在一个实施例中,响应于激活针对表102的行级活动跟踪,增加活动列300、301和302。从而,响应于启用针对表102的行级活动跟踪,DBMS 101产生向表102增加活动列300、301和302的一个或多个DDL命令。

在一个实施例中,活动列300、301和302以缺省值的形式被增加到表102。在一个实施例中,缺省值是NULL值。在其它实施例中,DBMS 101在活动列300、301和302的每行中以缺省的形式存储指示每个活动列被增加到表102的时间的时间戳。

在一个实施例中,活动列300、301和302是对数据库100的用户隐藏的系统列。例如,各种数据库应用可依赖通过活动跟踪收集的度量。为了确保数据库应用正确工作,DBMS 101采取措施以保护存储在活动列300、301和302内的度量的准确性和完整性。在一个实施例中,DBMS 101防止用户在数据库语句中直接引用活动列。从而,响应于接收到引用活动列300、301或302的数据库命令,DBMS101可以返回错误或者以其他方式拒绝执行该数据库命令。在其它实施例中,尽管DBMS 101防止会修改活动列300、301或302的数据库命令,但是仍然允许被动地读活动列的数据库命令。使用SQL作为例子,DBMS 101可接受SELECT语句的形式的查询,而拒绝引用活动列300、301或302的UPDATE语句。在其它实施例中,DBMS 101可以将对活动列300、301和302的访问限制到具有特殊权限的用户,诸如管理员。

在一个实施例中,DBMS 101维持确定活动列300、301和302是否对用户查询可见的会话级参数。此外,DBMS 101支持允许用户设置会话级参数的数据库命令。当该参数被设置为可见时,DBMS 101在用户查询中包括活动列300、301和302。然而,当该参数被设置为不可见时,DBMS 101从用户查询省去活动列300、301和302。从而,数据库100的用户能够控制当查询数据库100时是否观看活动列300、301和302。

在框202,DBMS 101接收引用表102的DML命令。在一个实施例中,从数据库100的用户接收DML命令。然而,在其它实施例中,DBMS 101自动产生DML命令。例如,作为由于接收或执行另一个数据库命令导致数据库触发器激活的结果,DBMS 101可产生DML命令。在一些实施例中,响应于接收到DML命令,DBMS 101检查与表102关联的元数据以确定是否活动跟踪已经被启用。如果活动跟踪被启用,则DBMS 101前进至框203。如果活动跟踪被禁用,则DBMS 101不前进至框203,而是执行该数据库命令。

在框203,DBMS 101确定由在框202接收的DML命令执行哪些活动。使用SQL作为例子,DBMS 101可以将SELECT命令关联到活动列300(读),将UPDATE命令关联到活动列301(写),以及将INSERT命令关联到活动列302(创建)。然而,在其它实施例中,同一个DML命令可与超过一个的活动列进行关联。例如,在相同语句执行期间,INSERT命令向表增加行,并且还可以使得DBMS101对该行进行写。从而,一个实施例可以将INSERT命令与活动列301和活动列302二者进行关联。结果,根据该实施例,DML命令可以以许多不同方式和组合与活动列进行关联。

在框204,DBMS 101更新与在框203确定的活动关联的活动列300、301和302。在一个实施例中,DBMS 101使用数据库触发器更新活动列300、301和302。从而,DBMS 101定义数据库触发器,该数据库触发器响应于在框202接收DML命令而激活并且产生更新关联的活动列的一个或多个附加DML命令。在其它实施例中,DBMS 101通过重写在框202接收的DML命令来更新活动列。例如,假定DML命令是UPDATE命令,则DBMS 101可以重写UPDATE命令,从而使得UPDATE命令在被执行时还向关联的活动列写入时间戳。能够在序号为09/167092的标题为“Database Fine-Grained Access Control”的发明人为Lei等等的申请中找到用于重写查询的技术的例子,该申请的全部内容以引用方式并入这里,以便就像完全在这里进行陈述一样。对于存储频度计数的实施例,与时间戳相反,更新活动列可以替代地包括产生或重写DML命令以使适当的活动列300、301和302内的计数器递增。

在一些情况下,在框202接收的DML命令将包含处理一组谓词的查询,这组谓词将DML命令的应用限制到表102的特定行103-111。使用SQL作为例子,DML命令可以包含WHERE子句。在一个实施例中,DBMS 101仅对于满足由DML命令定义的相同查询的行更新活动列300、301和302。从而,对于使用数据库触发器的实施例,DBMS 101在产生附加的一个或多个DML命令时包括在框202接收的DML命令中发现的相同查询。对于通过重写在框202接收的DML命令进行更新的实施例,在重写过程中原始查询保持原封不动。通过限制活动列300、301和302只对满足通过在框202接收的DML命令提交的谓词的那些行进行更新,DBMS 101能够只对DML命令的预期目标跟踪活动,这与可在扫描过程中执行的辅助活动(诸如“读”行以评估谓词)相反。

DBMS 101可选择重写DML命令以对活动列300、301和302进行更新而非依赖数据库触发器的一个理由在于降低开销量。如先前所述,当数据库命令被执行时,许多DBMS将执行维护任务(诸如产生REDO和UNDO日志),以防当前事务需要被重启或者回退。通过重写DML命令,而非产生附加DML命令,DBMS 101在相同语句执行期间执行关于原始数据库语句的活动以及对活动列300、301和302的更新。结果,维护任务被执行较少次数,使得DBMS 101以较小开销更新活动列300、301和302。

另外,对活动列300、301和302的更新将与由在框202接收的DML命令执行的活动一起进行提交和回退。从而,度量保持与活动同步。对于依赖REDO/UNDO日志以对数据库100的先前状态执行查询的诸如闪回查询的特征,这种特性允许精确地查看活动跟踪度量,因为它们存在于先前时间点。

然而,上述与数据库触发器相比优选重写以更新活动列300、301和302的功效可能并不适用于所有情况并且依赖于DBMS 101的特定于实现的设计细节。

实时行级活动跟踪对于活动列300、301和302内维持的时间戳实现了潜在非常精细级别的粒度。具体地讲,由于响应于对表102的行103-111执行各自的活动而更新活动列300、301和302,所以DBMS 101能够通过存储较粗或较细时间戳来控制收集度量的粒度的级别。例如,DBMS 101可以根据用户需求以秒、分、日、周等等的粒度存储时间戳。在一些实施例中,DBMS 101维持控制粒度的级别的参数,并且支持允许用户更新该参数的数据库命令。从而,实时行级活动跟踪允许DBMS 101为需要精确和最新度量的用户提供细粒度活动跟踪。

3.4批量行级活动跟踪

然而,在一些实施例中,实时行级活动跟踪会导致开销大量增加,尤其对于被动地读数据而不进行任何修改的DML命令。更具体地讲,当更新数据时,许多DBMS实施执行与维持数据库的一致性关联的任务,所述任务在执行只读取数据的DML命令时是不需要的。然而,当通过实时行级活动跟踪对读进行跟踪时,每次接收被动地读数据的DML命令时,DBMS 101通过修改表102以更新关联的活动列来响应。这种修改实际上改变了只读DML命令的基本语义,并且造成事务处理的开销。

在数据库100的特征或数据库应用能够容许较粗级别的粒度的度量的情形下,一些实施例可以替代地采取批量方案以减轻上述开销的影响。从而,为了方便,在这个章节中描述的技术将被称作批量行级活动跟踪。在一些实施例中,为所有活动列执行批量行级活动跟踪。然而,在其它实施例中,仅仅对跟踪读的活动列执行批量行级活动跟踪。

图4是示出根据一个实施例的DBMS为读执行批量行级活动跟踪的流程图。结果,图4描绘了图2所示的流程图的变型,所述变型允许使用批量方案跟踪读并且实时跟踪诸如写和创建的其它活动。然而,如上所述,其它实施例可替代地为所有活动执行批量行级活动跟踪而非仅对读执行批量行级活动跟踪。这些实施例可省去框204和400,而是直接从框203跳到框401。为了示出清楚的例子,将假设DBMS 101遵照图4所示的流程图以便对表102执行活动跟踪。此外,下面的解释假设在框201增加的活动列依附到图3所描绘的实施例。

上面在“实时行级活动跟踪”中描述了框200、201、202、203和204,为了简洁,对这些框的重复讨论将被省去。

在框400,DBMS 101确定在框202接收的数据库命令是否已经在框203被确定为执行读。如果在框202接收的数据库命令执行读,则DBMS 101前进至框401以执行批量行级活动跟踪。然而,如果在框202接收的数据库命令不执行读,则DBMS 101前进至框204以执行实时行级活动跟踪。在一些情况下,在框202接收的数据库命令可以在框203被映射到多个活动列。结果,DBMS 101可以横跨多个路径:进入框204以更新活动列301或302,并且进入框401以更新活动列300。

在框401,DBMS 101将由在框203接收的数据库命令读的行103-111记录在活动位映射中。与框204类似,在框203接收的数据库命令可包含例如WHERE子句的查询。从而,在这些情况下,DBMS 101执行查询以确定被该数据库命令影响的行,然后将这些行标记在活动位映射中。例如,活动位映射的各个位可对应于表102的各个103-111,DBMS通过翻转对应位来标记受影响的行。在一些实施例中,活动位映射存储在表102之外的元数据中。对于为比读更多的活动执行批量行级活动跟踪的实施例,DBMS 101可维持与各种跟踪的活动对应的多个活动位映射。

在框402,DBMS 101周期性地把活动位映射冲刷(flush)到表102。在一个实施例中,在框401标记的活动位映射与特定时段关联。为了提供清楚的例子,假定所述特定时段是日历日;然而,其它实施例能够使用以秒、分、小时、年或者任何其它任意时段进行测量的不同时段。从而,在每日的结束(即,午夜),DBMS 101产生一个或多个DML命令,所述一个或多个DML命令针对在位映射中标记的行利用指示前一天的日期的时间戳来更新活动列300,并且将位映射复位到它的初始状态。结果,存储在活动列300内的时间戳表示行103-111中的每一个被读的最后日。因此对活动列300的更新批量进行,而非响应于接收每个DML命令。因此,DBMS 101能够将对多个标记行的更新组合成较少更新DML命令,或者在可在每天的结束计划的停工期或维护期期间执行更新。在一些实施例中,DBMS 101支持允许用户设置所述特定时段的数据库命令。

3.5元数据行级活动跟踪

在一些实施例中,DBMS 101仅仅将活动跟踪度量维持为元数据,而非在作为表102的一部分的活动列内。依据DBMS 101的实施,由于缺乏在更新度量时产生的REDO/UNDO日志,所以这些实施例可能不能够利用DBMS 101的某些特征,诸如闪回查询。然而,由于表102不需要进行更新以存储度量,所以这些实施例可潜在地经历较少开销。为了方便,在这个章节中描述的技术将被称作“元数据行级活动跟踪”

图5是示出根据一个实施例的DBMS执行元数据行级活动跟踪的流程图。为了示出清楚的例子,将假定DBMS 101遵照图5所示的流程图以便对表102执行活动跟踪。此外,图5假定用于存储度量的元数据采取位映射的形式。然而,在其它实施例中,除位映射之外的映射结构可用于跟踪对行103-111执行的活动。

在图5中,已经在先前章节中描述了在框200、202、203和401中所描绘的步骤,并且为了简洁,将不包括重复解释。然而,在框203,在框202接收的DML命令执行哪些活动并非是通过检查DML命令与活动列之间的映射来确定的,而是DBMS 101检查DML命令与活动位映射之间的映射。

在框500,DBMS 101为每一个跟踪的活动产生一个活动位映射,并且将这些活动位映射与表102进行关联。与框201类似,在一个实施例中,DBMS 101产生三个活动位映射,其中,一个活动位映射跟踪读,一个活动位映射跟踪写,一个活动位映射跟踪创建时间。

在框501,DBMS 101周期性地把活动位映射冲刷到位映射日志。在一个实施例中,每一个活动位映射与特定时段(例如日历日)进行关联,但是可使用任何任意时段。在每天的结束,DBMS 101向位映射日志附加活动位映射,并且将位映射复位到它们的初始状态。结果,位映射日志包含为每天指示哪些行已经是特定活动的经受者的条目。为了确定度量,DBMS 101挖掘位映射日志。例如,为了确定哪些行103-111已经成为过去十天内读的经受者,DBMS 101可以从位映射日志检索与读对应的最后十个活动位映射。然后,能够通过执行OR(或)操作将这十个活动位映射加在一起,这会得出每个位指示在过去十日内关联行是否被读的一个位映射。在一个实施例中,DBMS 101支持允许用户查询位映射日志以发现度量的数据库命令。

3.6对象级活动跟踪

在一些实施例中,DBMS 101以对象级粒度执行活动跟踪。从而,关于对数据库对象(诸如表、视图和索引)执行的活动收集度量。

图6是示出根据一个实施例的DBMS执行对象级活动跟踪的流程图。为了提供清楚的例子,将假定DBMS 101执行对象级活动跟踪。此外,将假定用于跟踪活动的数据结构是位映射,其中,每个单个位对应于单个对象;然而,其它实施例可使用不同映射结构。

在框600,对数据库对象启用对象级活动跟踪。在一些实施例中,使用以上在“启用和禁用活动跟踪”中提及的任何技术来启用对象级活动跟踪。

在框601,DBMS 101接收对数据库对象执行活动的数据库命令。对于包含记录的数据库对象,数据库命令可以是DDL命令或DML命令,这取决于数据库命令是读还是操纵数据库对象的记录或者对象自身的结构。在其它情况下,诸如对于索引,操纵记录的DML命令可能不可应用。

在一些情况下,数据库命令可以不明确地引用数据库对象。例如,索引是用于提高数据检索操作的速度的结构。在一些情况下,索引以数据库表的特定属性为键。结果,当访问数据库表的数据库命令包含谓词时,DBMS 101确定是否存在与被谓词引用的属性对应的任何可应用索引。从而,如果DBMS 101找到可应用索引,则DBMS 101访问这些索引以加速扫描。同样地,当数据库表被修改时,与该数据库表关联的索引也被修改以保持索引最新。因此,数据库命令能够在不明确地引用索引的情况下对索引执行诸如读和写的活动。这同样适用于依赖于另一个数据库对象(诸如视图)的其它数据库对象。另外,结果,同一个数据库命令可以对超过一个的数据库对象执行活动。从而,DBMS 101可以对被数据库命令影响的每个数据库对象重复图6的一个或多个框。

在框602,DBMS 101确定在框601接收的数据库命令执行哪些活动。在一个实施例中,DBMS 101维持数据库命令与活动之间的映射,所述映射用于执行以上确定。

在框603,DBMS 101在对象活动位映射中标记活动。在一个实施例中,DBMS 101为每个跟踪的活动维持一个对象活动位映射。例如,一个对象活动位映射可对应于读,另一个对象活动位映射可对应于写,另一个对象活动位映射可对应于创建。在一个实施例中,对象活动位映射中的每个位对应于不同对象并且指示在当前时段内对象是否已经是关联的活动的经受者。

在框604,DBMS 101周期性地把对象活动位映射冲刷到位映射日志。在一个实施例中,每个活动位映射与特定时段(诸如日历日)关联,但是可使用任何任意时段。在每天的结束,DBMS 101向位映射日志附加活动位映射并且将位映射复位到它们的初始状态。结果,位映射日志包含为每日指示哪些行已经是特定活动的经受者的条目。为了确定度量,DBMS 101挖掘位映射日志。例如,为了确定在过去十日内哪些数据库对象已经是读的经受者,DBMS 101可从位映射日志检索与读对应的最后十个对象活动位映射。然后能够通过执行OR操作将这十个对象活动位映射相加在一起,这得出一个位映射,其中,每个位指示在过去十日内关联数据库对象是否已经被读。在一个实施例中,DBMS 101支持允许用户查询位映射日志以发现度量的数据库命令。

4.0数据分类

在一个实施例中,DBMS 101将数据库100的数据分类成一个或多个生命周期状态,这些生命周期状态表示每个数据元素的操作相关性。例如,可为当前关键数据保留“活动”生命周期状态,可为不常访问的数据保留“休眠”生命周期状态,可为几乎不访问并且应该被放置在归档存储器中的数据保留“归档”生命周期状态。

在一些实施例中,DBMS 101基于每行执行数据分类。从而,分类涉及各个行的操作相关性。在其它实施例中,DBMS 101基于每个对象对数据进行分类。从而,分类涉及各个数据库对象的操作相关性。

在一些实施例中,DBMS 101响应于接收指示DBMS 101启用数据库内归档的数据库命令来执行数据分类。在一个实施例中,数据库命令指示DBMS 101全局地对数据库100启用数据库内归档。在另一个实施例中,数据库命令引用要启用数据库内归档的一个或多个数据库对象。在其它实施例中,数据库命令可指定对于可应用数据库对象是应该以行级粒度还是对象级粒度执行数据库内归档。

4.1数据分类存储

在一些实施例中,DBMS 101在元数据中存储生命周期状态分类。例如,DBMS 101可以利用映射以将特定数据库对象和/或行与它们对应生命周期状态分类进行关联。

在另一个实施例中,对于行级分类,DBMS 101将生命周期状态分类作为数据库表的一部分存储在生命周期状态列中。图7示出了根据一个实施例的数据库内归档被启用后的表102。从而,表102包括生命周期状态列700,该生命周期状态列700能够为表102的行103-111中的每一个取活动、休眠或归档的值。在一个实施例中,当DBMS 101接收为表102启用数据库内归档的数据库命令时,DBMS 101产生向表增加生命周期状态列的一个或多个DDL命令。在一个实施例中,在创建时以活动生命周期状态初始化生命周期状态列700,该生命周期状态指示最高程度的操作相关性。

在另一个实施例中,对于行级分类,DBMS 101可以将生命周期状态分类存储在虚拟列中,其中,数据存储在元数据中但是如同虚拟列是表102的真实列一样由用户进行呈现和访问。从而,在一个实施例中,生命周期状态列700是虚拟列。

4.2自动数据分类

在一些实施例中,DBMS 101基于以上通过活动跟踪技术收集的度量来自动地对数据库100的数据进行分类。在一个实施例中,每个生命周期状态能够与数据被最后访问的时段关联。例如,“活动”生命周期状态可与在过去一个月内最后访问的数据进行关联,“休眠”生命周期状态可与在一个月至六个月之前最后访问的数据进行关联,“归档”生命周期状态可与超过六个月之前最后访问的数据进行关联。然而,其它实施例可使用与以上提供的例子不同的时段。在另一个实施例中,DBMS 101还考虑组成访问的活动的类型。例如,“活动”状态可与在特定时段内既接收到读又接收到写的数据进行关联,“休眠”状态可与在该特定时段内只接收到读的数据进行关联,“归档”状态可与在该特定时段内既没有接收到读也没有接收到写的数据进行关联。

在一个实施例中,例如在DBMS 101未被充分使用的停工期内,DBMS 101扫描数据库100以寻找周期性启用数据库内归档的数据库对象。在扫描的同时,DBMS 101检查通过活动跟踪技术产生的时间戳或位映射日志,基于上述的一个或多个因素确定是否应该更新特定数据库对象和/或行的分类,并且相应地更新分类。

4.3手动数据分类

然而,在其它实施例中,用户提交数据库100的行和/或数据库对象的生命周期状态分类。在许多情况下,用户可能具有对DBMS 101可能不可用的关于他们的数据的操作相关性的外部知识。例如,一些数据可能是重要的并且需要随时访问,而不管该数据已经被访问的频度或近度如何。从而,用户可能期望对与他们的数据关联的生命周期状态分类进行细粒度控制。

用户被定义为包括人类用户和DBMS 101外部的应用两者。从而,尽管这个章节的题目为“手动数据分类”,但是手动意图表示所述分类源于外部源,这与由DBMS 101自动确定相反。

在一个实施例中,用户通过提交利用用户自己的生命周期状态分类更新生命周期状态列700的DML命令来提交表102的行103-111的生命周期状态分类。在另一个实施例中,生命周期状态列700可被实施为虚拟列,从而响应于接收DML命令,DBMS 101替代地更新元数据而非表102的真实列。在另一个实施例中,DBMS 101可支持允许用户直接操纵存储特定数据库对象或行的分类的元数据的命令。

在一些情况下,用户可以将他们的分类基于上述的活动跟踪技术。从而,在一个实施例中,DBMS 101支持允许用户查询收集的度量的命令,以为他们的数据确定适当生命周期状态分类。然而,在其它实施例中,DBMS 101可以不支持活动跟踪或者用户可以简单选择不启用活动跟踪特征,而替代地依赖他们自己的判断和背景知识以确定生命周期状态分类。从而,手动生命周期状态分类可被实施为不依赖活动跟踪的分离的和独立的特征。

4.4行级可见性控制

在许多情况下,用户仅仅对具有特定程度的操作相关性的数据(例如具有活动生命周期状态的行)有兴趣。在一个实施例中,DBMS 101维持会话级参数,该会话级参数控制当DML命令被执行时哪些生命周期状态对数据库100的用户是可见的。此外,DBMS 101支持允许用户设置会话级参数的命令。

从而,在一个实施例中,当会话级参数指示特定生命周期状态可见时,DBMS 101自动地重写DML命令以包括将DML命令的应用限制到具有可见生命周期状态的行的谓词。例如,会话级参数可设置为缺省,使得仅仅具有活动生命周期状态的行是可见的。从而,当用户查询表102时,DBMS 101自动重写查询以增加将结果限制到生命周期状态列700指示活动状态的行的谓词。结果,向用户提供了对较小的活动数据集进行工作的假象,而不从数据库100去除较弱操作相关性的数据。另外,在许多情况下,具有活动生命周期状态的行仅仅代表存储在数据库100上的数据的一小部分。从而,通过减掉具有较弱操作相关性的数据,能够更加高效地执行连接(join),这是因为查询优化技术能够利用由附加谓词提供的基数的减少。

然而,如果需要具有较弱操作相关性的数据(诸如休眠或归档状态下的数据),则用户可提交指示DBMS 101设置会话级参数使得不同的生命周期状态集可见的命令。结果,用户能够无缝地从对活动数据集进行工作过渡到对休眠和/或归档数据进行工作,而不需要从数据库100去除和恢复数据。

在一些实施例中,能够通过利用可见性控制以分离活动、休眠和归档数据来改进应用升级。例如,当应用执行更新以启用新特征时,应用能够通过相应地设置会话级参数以相对于休眠或归档行来说优先更新活动行。结果,对于活动行,新特征对于用户能够立即可用,而对休眠和归档行的更新被延迟到以后的阶段中。

5.0数据库内归档

在一些实施例中,DBMS 101基于生命周期状态分类向存储层移动行和/或数据库对象。在一个实施例中,每个存储层表示访问速度与存储开销之间的特定平衡。作为一个例子,每个存储层可表示不同类型或质量的存储介质。通常,随着存储介质的访问速度上升,购买该存储介质的价格也趋于上升。结果,许多企业具有有限量的具有最快访问速度的高级存储空间和较慢但大量购买较便宜的大得多的量的二等或三等存储空间。从而,为了最大化DBMS 101的性能,具有较高操作相关性的数据可以放置在诸如最高质量盘驱动器的较快存储介质上,而具有较弱操作相关性的数据可放置在诸如光盘或磁带驱动器的较慢存储介质上。作为另一个例子,每个存储层可表示使用不同技术压缩数据的存储区域。与存储介质的选择类似,在这种情况下,每种压缩技术也表示在访问速度与存储空间之间的权衡。更具体地讲,实现较高压缩率的压缩技术还趋于当访问数据时花费较长时间进行解压。从而,为了最大化DBMS 101的性能,具有较高操作相关性的数据能够以非压缩的方式进行存储以允许较快访问,而具有较低操作相关性的数据能够进行压缩以节省空间。在其它实施例中,存储层可表示存储介质与用于在存储介质上压缩数据的技术的组合。

在一个实施例中,DBMS 101将每个生命周期状态与特定存储层进行关联。从而,DBMS 101可以在元数据中存储对于每个生命周期状态指示用于存储与该生命周期状态关联的数据的存储介质和/或压缩技术的映射。

在一些情况下,压缩技术可具有不同访问速度,这取决于对数据库元素执行的活动的类型。例如,一些压缩技术允许在读过程中快速访问数据库元素,但需要更多时间执行写。从而,在根据活动的类型区分生命周期状态的实施例中,生命周期状态也可与最佳地执行这些活动的存储层关联。例如,活动生命周期状态可与频繁接收读和写的数据库元素进行关联,休眠生命周期状态可与频繁接收读但不频繁接收写的数据库元素进行关联,归档生命周期状态可与既不频繁接收读也不频繁接收写的数据库元素进行关联。从而,具有活动生命周期状态的行可保持不压缩,具有休眠生命周期状态的行可通过优化读的技术进行压缩,具有归档生命周期状态的行可通过提供最佳压缩率的技术进行压缩。

在一个实施例中,响应于将数据库元素分类或者确定针对数据库元素的生命周期状态分类已经被修改,DBMS 101自动地将数据库元素移至与分类的生命周期状态关联的存储层。如上所述,可自动地或者作为手动用户输入的结果进行分类。在移动数据库元素的处理中,DBMS 101将数据元素存储在与存储层关联的存储介质中和/或使用与那个存储层关联的压缩技术压缩数据元素。在一个实施例中,当每个数据元素被分类时,DBMS 101移动数据库元素。然而,在另一个实施例中,DBMS 101可以批量向存储层移动数据库元素。作为一个例子,DBMS 101可以等待直到阈值数目的数据库元素需要移至特定存储层,然后响应于达到阈值执行移动。作为另一个例子,DBMS 101可以周期性地在指定的时段(诸如在计划的维护停工期)将数据库元素移至它们各自的存储层。

在一个实施例中,DBMS 101维持指示用于存储数据库100的数据库元素的存储介质和压缩技术的索引,以及指示数据库元素可位于它们各自存储介质内什么位置的地址。从而,当数据库元素被放置在存储层中或者从一个存储层移至另一个存储层时,索引被更新。然后,当DBMS 101需要访问特定数据库元素时,DBMS 101能够使用该索引定位存储数据库元素的位置和/或访问数据库元素所需的解压缩技术。

在一个实施例中,DBMS 101将数据库元素存储在被称作压缩单元的柔性可扩展结构内,该柔性可扩展结构由序号为12/617669的标题为“Structure of Hierarchical Compressed Data Structure for Tabular Data”的发明人为Ganesh等的申请进行描述,该申请的全部内容以引用方式并入这里,以便如同完全在这里进行陈述一样。由序号为12/617669的申请描述的压缩单元用作能够由DBMS 101用于在已经使用不同技术进行压缩的同一数据库内维持数据的结构的一个例子。

6.0硬件总览

根据一个实施例,通过一个或多个专用计算装置实施这里所述的技术。专用计算装置可以是硬连线的以执行所述技术,或者可以包括被永久性编程为执行所述技术的诸如一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)的数字电子器件,或者可以包括被编程为依据在固件、存储器、其它存储装置或组合中的程序指令执行所述技术的一个或多个通用硬件处理器。这些专用计算装置还可以将定制硬件连线逻辑、ASIC或者FPGA与定制编程进行组合以实现所述技术。所述专用计算装置可以是台式计算机系统、便携式计算机系统、手持式装置、联网装置或者包括硬连线和/或程序逻辑以实施所述技术的任何其它装置。

例如,图8是示出可实施本发明的实施例的计算机系统800的框图。计算机系统800包括用于传送信息的总线802或其它通信机构、以及与总线802耦合以处理信息的硬件处理器804。例如,硬件处理器804可以是通用微处理器。

计算机系统800还包括诸如随机存取存储器(RAM)或者其它动态存储装置的耦合到总线802的用于存储信息和由处理器804执行的指令的主存储器806。主存储器806还可用于存储由处理器804执行的指令的执行期间内的临时变量或其它中间信息。当这些指令存储在处理器804可访问的非暂态存储介质中时,使计算机系统800成为被定制为执行在这些指令中指定的操作的专用机器。

计算机系统800还包括耦合到总线802以存储用于处理器804的指令和静态信息的只读存储器(ROM)808或其它静态存储装置。诸如磁盘或光盘的存储装置810被提供并且耦合到总线802以存储信息和指令。

计算机系统800可经由总线802耦合到显示器812(诸如阴极射线管(CRT))以向计算机用户显示信息。包括字母数字和其它键的输入装置814耦合到总线802,以向处理器804传送信息和命令选择。另一种类型的用户输入装置是用于向处理器804传送方向信息和命令选择以及用于控制显示器812上的光标移动的光标控制装置816,诸如鼠标、跟踪球或光标方向键。这个输入装置通常具有允许该装置在平面内指定位置的沿两个轴(第一轴(例如x)和第二轴(例如y))的两个自由度,。

计算机系统800可使用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实施这里所述的技术,上述定制的硬件连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑与该计算机系统进行组合导致计算机系统800成为专用机器,或者将计算机系统800编程为专用计算机。根据一个实施例,响应于处理器804执行包含在主存储器806内的一个或多个指令的一个或多个序列,由计算机系统800执行这里的技术。这些指令可从诸如存储装置810的另一个存储介质读入主存储器806。执行在主存储器806中包含的指令的序列使得处理器804执行这里所述的处理步骤。在替代实施例中,可替代软件指令使用硬连线电路,或者与软件进行组合来使用硬连线电路。

这里所用的术语“存储介质”是指存储使得机器以特定方式进行工作的指令和/或数据的任何非暂态介质。这种存储介质可包括非易失性介质和/或易失性介质。例如,非易失性介质包括诸如存储装置810的光盘或磁盘。易失性介质包括诸如主存储器806的动态存储器。例如,存储介质的公共形式包括软盘、柔性盘、硬盘、固态驱动器、磁带或者任何其它磁数据存储介质、CD-ROM、任何其它光数据存储介质、具有孔的图案的任何物理介质、RAM、PROM、EPROM、FLASH-EPROM、NVRAM、任何其它存储芯片或盒。

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

各种形式的介质可参与向处理器804运送一个或多个指令的一个或多个序列以用于执行。例如,可初始在远程计算机的磁盘或固态驱动器上携带这些指令。远程计算机可以将指令加载到它的动态存储器中,并且使用调制解调器经由电话线发送所述指令。计算机系统800本地的调制解调器能够接收电话线上的数据,并且使用红外线发射器将数据转化成红外线信号。红外线检测器能够接收在红外线信号中携带的数据,并且适当的电路能够将所述数据置于总线802上。总线802将数据运送到主存储器806,处理器804从主存储器806检索并执行指令。由主存储器806接收的指令可选地在由处理器804执行之前或之后存储在存储装置810上。

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

网络链路820通常经由一个或多个网络向其它数据装置提供数据通信。例如,网络链路820可以经由本地网络822向主机824或者由互联网服务提供商(ISP)826运营的数据设备提供连接。ISP 826进而经由现在统称为“互联网”828的世界分组数据通信网来提供数据通信服务。本地网络822和互联网828均使用携带数字数据流的电信号、电磁信号或光信号。向计算机系统800运送数字数据或者从计算机系统800运送数字数据的在网络链路820上并且经由通信接口818的信号以及经由各种网络的信号是传输介质的示例形式。

计算机系统800能够经由网络、网络链路820和通信接口818发送消息并接收数据(包括程序代码)。在互联网例子中,服务器830可以经由互联网828、ISP 826、本地网络822和通信接口818发送请求的应用程序的代码。

当接收的代码被接收时可由处理器804执行,和/或存储在存储装置810或者其它非易失性存储器中用于以后执行。

在上述说明中,已经参照随着实施而变化的大量具体细节描述了本发明的实施例。该说明和附图被相应地视为示意性的而非限制性的。本发明的范围的唯一和专用指示以及申请人期望的本发明的范围是以权利要求发布的特定形式从本申请发布的一组权利要求(包括任何后续修正)的文字及等同范围。

7.0第一附加公开

在一个实施例中,一种方法包括:数据库管理系统(DBMS)向数据库表增加一个或多个活动列,其中,所述一个或多个活动列中的每一个与活动集中的特定活动关联;响应于接收访问数据库表的一个或多个行的数据库命令,DBMS确定所述数据库命令执行的一个或多个活动;DBMS对于所述一个或多个行中的每一个用活动信息更新所述一个或多个活动列中的活动列,其中,所述活动列与所述一个或多个活动中的至少一个活动关联;其中,该方法由一个或多个计算装置执行。

在一个实施例中,该方法还包括:DBMS在与所述一个或多个活动对应的一个或多个位映射中标记所述一个或多个行,以及响应于确定指定的时段已经流逝,基于所述一个或多个位映射对所述活动列执行更新。

在一个实施例中,通过重写数据库命令以包括向所述活动列写针对所述一个或多个行中的每一个的活动信息来执行更新活动列。

在一个实施例中,通过产生向所述活动列写针对所述一个或多个行中的每一个的活动信息的一个或多个附加数据库命令来执行更新活动列。

在一个实施例中,活动列是防止用户直接更新的受保护列。

在一个实施例中,活动信息包括时间戳或频度计数中的至少一个。

在一个实施例中,响应于接收请求启用对数据库表的活动跟踪特征的数据库命令,发生向所述数据库表增加一个或多个活动列。

在一个实施例中,数据库命令包含谓词集,并且所述一个或多个行与所述谓词集匹配。

在一个实施例中,所述一个或多个活动列包括与读关联的活动列、与更新关联的活动列或者与插入关联的活动列中的至少一个。

在一个实施例中,该方法还包括:DBMS在元数据中存储活动信息,并且其中响应于确定应该把活动信息从所述元数据冲刷到数据库表来执行更新活动列。

在一个实施例中,一个或多个非暂态计算机可读存储介质存储当由一个或多个处理器执行时使得所述一个或多个处理器执行该方法的指令。

8.0第二附加公开

在一个实施例中,一种方法包括:响应于接收访问数据库的一个或多个数据库元素的数据库命令,数据库管理系统(DBMS)确定所述数据库命令执行的一个或多个活动;DBMS将所述一个或多个数据库元素标记在与所述一个或多个活动对应的一个或多个位映射中;响应于确定指定的时段已经流逝,DBMS向位映射日志增加所述一个或多个位映射;其中,该方法由一个或多个计算装置执行。

在一个实施例中,数据库元素是数据库表的行。

在一个实施例中,数据库元素是数据库对象。

在一个实施例中,数据库命令引用数据库表,并且由所述数据库命令访问的所述一个或多个数据库元素中的至少一个是数据库索引。

在一个实施例中,该方法还包括:响应于接收对在特定时间帧内已经访问的数据库元素集的查询,DBMS基于位映射日志确定所述数据库元素集。

在一个实施例中,一个或多个非暂态计算机可读存储介质存储当由一个或多个处理器执行时使得所述一个或多个处理器执行该方法的指令。

9.0第三附加公开

在一个实施例中,一种方法包括:数据库管理系统(DBMS)将多个生命周期状态值中的每一个与多个存储层中的不同存储层进行关联;DBMS向包括行的数据库表增加生命周期状态列,其中,生命周期状态列包含生命周期状态值;DBMS接收针对所述数据库表的特定行利用特定生命周期状态值更新生命周期状态列的命令;DBMS将所述特定行移至与所述特定生命周期状态值关联的存储层;其中,该方法由一个或多个计算装置执行。

在一个实施例中,每个存储层表示使用特定技术压缩数据的存储区域或存储介质中的至少一个。

在一个实施例中,响应于接收对于数据库表启用归档特征的数据库命令,生命周期状态列被增加到所述数据库表。

在一个实施例中,该方法还包括:DBMS维持指示多个生命周期状态中的可见的生命周期状态集的会话级参数;响应于接收数据库命令,DBMS重写所述数据库命令以包括将所述数据库命令的应用限制到与所述生命周期状态集内的生命周期状态关联的数据库表的行的一个或多个谓词。

在一个实施例中,该方法还包括:响应于接收指定新的生命周期状态集的数据库命令,DBMS修改会话级参数以指示所述新的生命周期状态集是可见的。

在一个实施例中,所述多个生命周期状态值基于每个存储层的访问速度与所述多个存储层关联。

在一个实施例中,生命周期状态列是虚拟列。

在一个实施例中,响应于确定特定时段已经流逝,发生移动特定行。

在一个实施例中,响应于确定阈值数目的行拥有具备特定生命周期状态值的生命周期状态列,但所述行还没有被移至与所述特定生命周期状态值关联的存储层,发生移动特定行。

在一个实施例中,该方法还包括DBMS更新索引以指示特定行的位置。

在一个实施例中,一个或多个非暂态计算机可读存储介质存储当由一个或多个处理器执行时使得所述一个或多个处理器执行该方法的指令。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1