将行和对象数据库活动跟踪到块级热图中的制作方法

文档序号:19265192发布日期:2019-11-29 17:34阅读:272来源:国知局
将行和对象数据库活动跟踪到块级热图中的制作方法

本公开涉及数据库,并且更具体地涉及将行和对象数据库活动跟踪到块级热图中。



背景技术:

在政府和法人组织中以不断增大的速率生成并且存储数据。虽然一些商业数据几乎未曾失去它的价值,但是大部分数据的有用性倾向于随时间降低,直到它没有用于几乎任何目的的进一步价值。通常,商业信息的价值在数据被创建不久以后倾向于是最大的并且仅仅短时间段保持活动,在最多几年以后,数据对企业的重要性、并且因此数据的一般使用率开始降低。但是,许多商业由诸如合法托管之类的因素限制,需要数据在数据的有用性已经期满后被保留很久。

因而,通常已经注意到,用户有时访问存储在数据库内的数据的仅仅10%-20%。其它80-90%的数据很少(如果有过的话)被用户访问,并且还有助于维护数据库需要的存储成本的聚集。更糟的是,随着由数据库存储的数据量增加,性能由于较慢的完整表扫描和拉长的应用升级而变得退化。

因此,面对上升的存储成本和退化的系统性能,商业已经探求高效地管理他们的数据库的不活动数据的方式。目前,许多商业通过借助于将数据库中的不活动数据卸载到档案存储器中的第三方归档解决方案来试图实现这一目标。当这些解决方案有助于改善加速的数据产生的影响时,采用第三方档案解决方案的商业倾向于将一个问题用许多其它问题替换。

作为一个问题,第三方归档解决方案倾向于缺乏对数据库的格式和内容的熟悉。例如,许多第三方归档解决方案仅仅在文件系统级工作并且因此只不过以文件的粒度归档。因此,当第三方归档解决方案可以能卸载构成数据库的各个档案时,第三方归档解决方案不能选择性地卸载各个数据库元素。

此外,第三方归档解决方案可以基于诸如文件被访问的频率或新近之类的文件级度量检测不活动的数据,但是可能不能以单个数据库元素的粒度检测不活动性。因此,当数据库文件包含活动的和不活动的数据时,第三方归档解决方案可能不能仅仅识别和归档不活动的数据。这个问题可以由将数据作为扁平文件存储的数据库实施方式恶化,其中整个表、乃至整个数据库可以被包含在文件系统上的单个大的文件之内。

为了围绕第三方档案解决方案不能分开超出文件粒度的不活动数据进行工作,数据库管理员可以反而人工地将活动和不活动的数据对象分成不同的数据库文件。例如,数据库管理员可以明确地移动不活动的数据对象到分开的表空间,其然后可以被卸载到归档存储器。但是,此工作区引入繁重的数据库管理负担,因为实施和验证需要的应用图式修改不是小任务。例如,可以需要数据库管理员辨别数据访问模式与重做记录并且开发定制的脚本以分开不活动的数据。

基于上述,存在对在维护数据库可管理性和性能的同时以细粒度级识别数据库活动的方法的需要。

本节中描述的方法是可以追随的方法,而不是已被预先构思或者追随的必然方法。因此,除非另有陈述,不应当假定本节中描述的方法中的任何一个仅仅由于它们包含在本节中而被认为是现有技术。

附图说明

通过示例方式而不是通过限制方式来说明本发明,在附图的图中,相似的参考数字指代相似的元件并且其中:

图1a是描述根据实施例的将行和对象数据库活动跟踪到块级热图的描述示例数据库管理系统的方框图;

图1b是描述根据实施例的在用于将行和对象数据库活动跟踪到块级热图的数据库管理系统中的示例数据库数据的方框图;

图1c是描述根据实施例的用于热图的内存表示的示例结构的方框图;

图1d是描述根据实施例的将位图块保存到存储的表示的示例的方框图;

图2是描述根据实施例的用于将行和对象数据库活动跟踪到块级热图的处理的流程图;

图3是可以实施实施例的计算机系统的方框图。

具体实施方式

在下面说明中,为了说明目的,阐述许多的细节以便提供对本发明的更彻底的理解。但是,本领域技术人员将清晰,在没有这些细节的情况下也可以实践本发明。在其它实例中,公知的结构和设备以方框图形式示出以便避免不必要地模糊本发明。

概述

在实施例中,数据库管理系统(“dbms”)在行和对象级跟踪数据库活动。一般地说,在最细数据库粒度级,例如行格式化的表的行、列格式化的表的列、对象类的对象记录、和数据库对象,针对活动跟踪数据库。活动是指对数据元素的各种类型的访问,包括读或写(修改)。在此申请中的术语“热图”是指反映关于在数据库中的不同元素的活动的统计量:具有最新访问的元素是“热”的,而没有最新访问的元素是“冷”的。对于具有最少资源效果的最佳性能,使用被周期性地保存到存储的表示的高效的内存表示写入热图。

虽然在行和对象级跟踪数据库活动,但是记录的热图可以在可以是数据库块级的下一较高级映射,以优化存储器和存储利用。在热图中的统计量也可以被聚合以用于较高级数据库结构。热图的内存表示可以使用诸如动态分配的位图块的稀疏数据结构以最小化存储利用。为了维护高数据库性能,可以预分配内存表示的部分,并且可以提供分层的元数据结构以简化快速的数据库块查找。

按照与下层文件结构或表空间格式一致的方式执行内存表示到存储器的周期性保存。在保存时,时间戳或时间窗口可以被关联用于每个记录的活动,其可以被合并为最后一次访问时间或随时间被记录为快照。只在特定数目的保存循环没有活动以后可以释放用于保存的位图的存储器。热图的存储的表示可以被分层地结构化以用于快速的数据库块查找,并且可以被作为单个副本在多个数据库实例之间共享。

因为由可以访问并且了解数据库的内部数据结构的数据库管理系统执行活动跟踪,因此数据库活动可以在最细的可能粒度级、或行和对象级被跟踪,其然后被写入到块级热图。活动跟踪在后台作为数据库管理系统的一部分透明地进行而不需要任何人工干预、对用户没有管理负担。因而,可以利用最少的用户努力产生高度精确而详尽的热图而没有扩大的人工数据间隔,尤其当与只能在文件粒度跟踪的第三方解决方案相比较时。

通过使用如以上概括的热图的内存表示和周期性地保存的存储表示,可以最小化活动跟踪开销以维护高性能。来自于热图的访问统计量可以在来自于数据库块级并且达到分区级、片段和对象级、表空间级、和数据库级的任何期望的粒度级被具体化到用户和应用。可以通过利用这些具体化的访问统计量支持诸如数据库性能简述和用于归档不活动数据的自动或引导的信息生命周期管理之类的高级特征。

数据库系统

本发明的实施例用在dbms上下文中。因此,对dbms的描述是有用的。

dbms管理数据库。dbms可以包括一个或多个数据库服务器。数据库包括存储在诸如硬盘集合之类的持久存储器机构上的数据库数据和数据库词典。数据库数据可以被存储在一个或多个数据容器中。每个容器包含记录。每个记录内的数据被组织成一个或多个字段。在关系dbms中,数据容器被称为表,记录被称为行,并且字段被称为列。在面向对象的数据库中,数据容器被称为对象类,记录被称为对象,这里也称为对象记录,并且字段被称为属性。其它数据库架构可以使用其它术语。

数据库词典包括定义在物理上或逻辑上包含在数据库中的数据库对象的元数据。实际上,数据库词典定义数据库的全部。数据库对象包括表、索引、视图、列、数据类型、用户、用户特权、和用于存储数据库对象数据的诸如表空间之类的存储结构。

表空间是将有关逻辑结构组合在一起的数据库存储单元,并且包含一个或多个物理数据文件。这些逻辑结构可以包括片段、或用于诸如表、表群集、或索引之类的特定数据库对象的空间的分配。片段可以被包含在一个数据文件中或可以跨多种数据文件。可以使用范围的集合限定片段,其中范围包含一个或多个连续的数据库块。

也被称为数据块的数据库块是持久存储器的单位。由数据库服务器使用数据库块以存储数据库记录(例如存储表的行,存储列的列值)。当从持久存储器读取记录时,包含记录的数据库块被复制到数据库服务器的易失性存储器中的数据库块缓冲器中。数据库块通常包含多个行,以及控制和格式化信息(例如到表示行或其它数据结构的字节序列的偏移、影响行的事务的列表)。

数据库块被称为是原子的,因为至少部分地,数据库块是数据库服务器可以从持久存储设备中请求的数据库数据的最小单元。例如,当数据库服务器查找存储在数据库块中的行时,通过在整个数据库块中读取,数据库服务器仅仅可以从持久存储器中读取行。

用户通过提交使得数据库服务器对存储在数据库中的数据执行操作的数据库服务器命令与dbms的数据库服务器进行交互。用户可以是运行在与数据库服务器交互的客户端计算机上的一个或多个应用。多个用户这里也可以被集体地称为用户。

数据库命令可以以符合数据库语言的数据库语句的形式。用于表达数据库命令的数据库语言是结构化查询语言(sql)。有许多不同的sql版本,某些版本是标准的并且某些是专有的,并且有各种扩展。数据定义语言(“ddl”)命令被发出到数据库服务器以创建或配置数据库对象,诸如表、视图、或复杂数据类型。sql/xml是在操作对象关系数据库中的xml数据时使用的sql的常见扩展。

多节点数据库管理系统由共享对相同数据库的访问的互连节点组成。通常,节点经由网络互连并且在不同范围上共享对共享存储器的访问,例如对盘驱动器的集合和存储在其上的数据库块的共享访问。在多节点数据库系统中的节点可以是经由网络互连的一组计算机的形式(例如工作站,个人计算机)。可替换地,节点可以是网格的节点,其由以与机架上的其它服务器叶互连的服务器叶形式的节点组成。

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

来自于多节点数据库系统中的多个节点的资源可以被分配给运行特定数据库服务器的软件。来自于节点的软件和资源分配的每个组合是这里称为“服务器实例”或“实例”的服务器。数据库服务器可以包括多个数据库实例,它们中的一些或所有运行在包括单独服务器叶的单独计算机上。

系统概述

图1a是描述根据实施例的将行和对象数据库活动跟踪到块级热图中的示例数据库管理系统100的方框图。图1a的数据库管理系统100包括数据库服务器实例110和数据库120。数据库服务器实例110包括处理111和存储器112。存储器112包括锚115和热图160。锚115包含文件图116、数据117、和自由列表118。热图160包括位图逻辑块地址(lba)图162、位图块164a、和位图块164b。数据库120包括用户数据表空间130和元数据表空间132。用户数据表空间130包括数据文件140。数据文件140包括条带142。条带142包括数据库块144a和数据库块144b。元数据表空间132包括热图150。热图150包括统计lba图152、统计块154a、和统计块154b。

虽然数据库管理系统100仅仅示出单个数据库服务器实例110时,但是实施例可以包括由一个或多个节点支持的多数据库服务器实例。因此,数据库管理系统100可以是多节点数据库系统。此外,虽然数据库120被显示为存储在单个存储元件上,但是数据库120可以由跨多个本地和/或联网的物理盘的诸如分层存储器和盘阵列之类的任何类型的基础存储体支持。可以使用自动存储管理器、逻辑体管理器、群集文件系统、或另一个存储层对接存储体。

数据库服务器实例110是由数据库管理系统100的数据库服务器支持的服务器实例。数据库服务器实例110包括用于管理数据库120的访问和管理的处理111和存储器112的分配。数据库客户端可以发出针对数据库120的命令和查询,其然后由数据库服务器实例110和/或分配给数据库120的其它数据库实例服务。因此,数据库服务器实例110可以包含存储器112中的各种内部数据结构和在用于管理数据库120的处理111中的后台处理。为简单起见,数据库服务器实例110仅仅被显示为包括与活动跟踪有关的那些数据结构,诸如热图的内存表示,如下面更详细陈述的。

数据库120包括存储在诸如如上所述的存储体之类的持久存储器机构上的数据库数据和数据库词典。数据库120的数据库词典可以定义数据库对象,其可以被分配在诸如用户数据表空间130和元数据表空间132之类的一个或多个表空间中。虽然示出单个用户数据表空间130和单个元数据表空间132,但是数据库120可以包括多个数据表空间和多个元数据表空间。用户数据表空间130包含诸如数据库表、索引、和其它数据之类的用户数据,而元数据表空间132包含热图的存储的表示,如下面更详细说明的。

用户数据表空间130是包含诸如是在存储体上的物理文件的数据文件140之类的一个或多个数据文件的逻辑结构。每个数据文件包括诸如条带142之类的分配条带。数据文件140支持的分配条带的数目可以取决于用户数据表空间130是小的文件表空间还是大的文件表空间。每个分配条带可以包含高达固定数目的数据库块。每个数据库块表示数据库服务器实例110可以从数据库120请求的最小存储单元。每个数据库块的大小不取决于基础存储体中的每个分配单元的大小。因此,单个数据库块可以不一定映射到单个分配单元。

数据文件140包含片段、或存储数据库对象或它的分区的逻辑结构。例如,对应于数据库表“订单”的片段可以被映射到条带142中的数据库块144a和144b。片段到连续的数据库块的一个或多个范围的映射可以被表示在储存的元数据区域,没有具体地示出。

热图生成处理

由于数据库管理系统100的基本轮廓现在就绪,审阅用于生成数据库管理系统100内的热图的处理步骤的高级总览可以是有益的。转向图2,图2是描述根据实施例的用于将行和对象数据库活动跟踪到块级热图中的处理200的流程图。

接收数据库命令

在处理200的块202处,参考图1a,数据库管理系统100接收针对数据库120的数据库命令。数据库命令可以符合包括结构化查询语言(sql)的数据库语言。因此,数据库客户端可以输入针对数据库120的sql命令,其可以被直接或间接地从用户或与数据库120对接的应用中输入。因为数据库服务器实例110可以是数据库120的实例,因此数据库服务器实例110可以被分配以接收和处理sql命令。

为了在步进通过处理200时提供示例数据,图1b是描述根据实施例的用于将行和对象数据库活动跟踪到块级热图中的数据库管理系统中的示例数据库数据的方框图。图1b的图101包括数据库块144a、数据库块144b、数据库客户端请求180、和数据库管理系统响应182。相对于图1b,类似编号的元件可以对应于图1a中相同的元件。图1b的数据库客户端请求180包括示例sqlselect查询,其从具有等于10的“客户id(customerid)”字段的“订单(orders)”表中请求行。“订单”表可以被存储在数据库120的用户数据表空间130中,或更具体地在包括数据库块144a和144b的片段中。图1b示出用于“订单”表的示例行数据,包括在数据库块144a中的表行146a、表行146b、和表行146c,和在数据库块144b中的表行146d、表行146e、和表行146f。在数据库管理系统响应182中示出响应于数据库客户端请求180的最终结果。

开发执行计划

在处理200的块204处,参考图1a,数据库管理系统100执行来自于块202的数据库命令,其中执行数据库命令访问一个或多个数据库元素,所述一个或多个数据库元素被存储在一个或多个受影响的数据库块中。例如,数据库服务器实例110可以生成用于在数据库客户端请求180中的查询的执行计划,其可以利用统计量、启发式、估计、和其它因子从不同的候选执行计划中选择最优执行计划。执行计划提供在数据库管理系统中执行数据库命令时被执行的特定步骤或动作。

例如,为了找到数据库客户端请求180中匹配的行,执行计划可以指定对“订单表使用完整表扫描,或可以可替换地如果适当的索引可用则指定使用诸如索引扫描之类的其它访问路径。另外,当可能并且有利于这样做时可以并行操作。对于本示例,执行计划可以指定对“订单”表串联地执行完整表扫描。

跟踪行和对象级元素

当数据库服务器实例110执行执行计划时,访问一个或多个数据库元素。这些数据库元素可以被跟踪并且可以包括行格式化的表的行、列格式化的表的列、对象类的对象记录、和数据库对象。换句话说,跟踪的元素对应于最细的可能数据库粒度级、或行和对象级。

为了减小开销,跟踪可以被局限于包含在用户数据片段中的数据库对象,忽略诸如索引、取消记录、和大对象(lob)之类的其它类型的数据库对象。但是,在一些实施例中,可以期望也跟踪对这些对象的访问。某些数据库操作可以免除被跟踪,例如直接路径负载,其可以反而直接更新热图的存储的表示。

对于本示例,跟踪的元素可以是行格式化的“订单”表的行。在204块中执行动作或执行计划的过程中,在数据库120内受影响的元素可以被跟踪并且确定。例如,当在执行执行计划的过程中对“订单”表执行完整表扫描时,表行146a和146c可以被跟踪为匹配“客户id=10”的谓词的那些行。

在此示例中,执行计划仅仅处理“订单”表中的行。但是,在用于更大或更复杂的数据库查询的执行计划中,附加谓词和诸如表结合之类的条件可以放宽执行计划以处理数据库120中的多个表和数据库对象。除检索或读取行之外,诸如insert或update之类的数据库命令也可以创建或修改执行计划中的行。不考虑特定执行计划,在数据库120中的受访问活动影响的所有元素可以在实现执行计划的过程中被跟踪,不管访问活动是读取、写入、或创建,并且不管元素是行、列、对象记录、或数据库对象。

在访问所述一个或多个元素同时执行执行计划的过程中,包含一个或多个元素的受影响的数据库块也可以被识别。例如,在检索用户数据表空间130的片段内的特定数据库行的过程中,数据库管理系统100可以识别包含特定数据库行的特定的数据库块。在本示例中,因为表行146a和146c两个都包含在单个数据库块144a中,因此受影响的数据库块仅仅包括单个数据库块144a。但是,多个数据库块可以根据跟踪的元素的数目和元素是否跨越多个数据库块被影响,如在例如行链或重新安置的行中。已经识别了受影响的数据库块,处理200可以进行到块206。

在块级记录活动

在处理200的块206处,参考图1a,对于受影响的数据库块,数据库管理系统100在块级热图中记录对应于一个或多个数据库元素的访问的活动。如以上概括地讨论的,可以利用周期性地保存到存储器的内存表示创建热图。例如,数据库服务器实例110的处理111内的后台处理以可以被调度以基于诸如每小时一次的循环的周期性调度发起将诸如存储器112中的热图160之类的热图的内存表示保存到诸如数据库120中的热图150之类的热图的存储表示。在下面部分中提供热图表示和保存处理的详细讨论。

热图的内存表示

图1c是描述根据实施例的用于热图的内存表示的示例结构的方框图。图1c的图102包括锚115、热图160、数据库块144a、和数据库块144b。热图160包含文件数目161、位图lba图162、位图块164a、和位图块164b。位图lba图162包括条带图166和条带块167。条带块167包括lba偏移168。参照图1c,类似编号的元件可以对应于图和图1b中的相同的元件。

分层的元数据结构

如图1c所示,利用分层结构组织用于热图的内存表示的元数据。如下面讨论的,分层结构具有四级:第一数据库级、第二文件级、第三条带级、和第四位图级。对应于特定数据库块的位图块可以通过遍历分层结构被快速定位,其可以适应具有大数据集合的非常大的数据库。另外,分级结构可以提供更细的并行性控制,因为热图被分割成可以被独立地访问的位图块。虽然图1c中示出的分层结构是一个示例内存表示,但是其它数据结构也可以用于针对其它优化优先级或数据库配置。

第一数据库级

第一级或数据库级包括锚115,其包含文件图116、数据117、和自由列表118。文件图116可以参考许多特定于文件的热图,包括特定于数据文件140的热图160。文件图116可以具有预分配的数目的指针,例如64k指针,以参考特定于文件的热图。数据117可以包含高级数据,包括用于保存循环的块统计量、聚合的访问统计量、并行性控制结构、全局标记和变量、和其它数据。块统计量可以概括用于先前保存循环的位图块活动,诸如在每个位图块中的位集合的数目。聚合的访问统计量可以聚合用于诸如数据文件、分配条带、表空间、或数据库之类的较高级结构的访问统计量。例如,聚合的访问统计量可以标记对于数据文件140访问的数据库块的数目。并行性控制结构可以包括共享的锁存器以在多个线程或处理之间调节对位图块的写入访问,具有为调节位图分配和去分配而提供的子锁存器。

动态分配

为了保护存储器空间,内存表示的特定于文件的热图和其它部分可以根据需要被动态地分配。因此,当访问活动出现在数据库120中的特定数据文件时,如果已经不存在则可以动态地创建用于该特定数据文件的特定于文件的热图,根据需要更新文件图116和自由列表118。因为数据库120仅仅包含单个数据文件140,因此仅仅示出单个热图160。但是,当在多个数据文件中跟踪活动时可以存在多个特定于文件的热图。对于在条带级和位图级的存储器分配也可以出现类似的处理。为了在文件、条带、和位图级跟踪自由空间,可以利用自由列表118内的自由列表或任何其它存储器管理技术。

预分配

为了减少动态分配的处理开销,可以在开始数据库服务器实例110时预分配内存表示的部分。因此,锚115可以连同特定于文件的热图、条带块、和位图块的初始分配一起被预先创建并且分配。初始分配可以基于特定阈值,诸如足够的量以适应数据库120中的最大可能数据库块的10%。虽然10%被给出为一个示例,但是取决于估计的数据库工作量和可用的存储器资源,初始分配可以被设置为任何值。

第二文件级

第二级或文件级包括特定于文件的热图,也被称为用于文件上下文的文件锚。在给定的特定于文件的热图中,诸如热图160,文件号161可以识别相关文件,其可以是唯一地识别数据库120内的数据文件的绝对文件号。对于热图160,文件号161可以识别数据库120中的数据文件140。每个特定于文件的热图包括条带图,诸如条带图166,其映射到诸如条带块167之类的一个或多个条带块。条带块的数目取决于数据文件内的分配条带的数目。在热图160的情况下,仅仅存在单个条带块167,因为数据文件140仅仅包含单个条带142。在其它数据文件中,例如用于大文件表空间的数据文件,分配条带的数目可以被局限于设置的数目,诸如1024个分配条带。

第三条带级

第三级或条带级包括条带块,诸如条带块167,也被称为用于条带上下文的条带锚。每个条带块可以映射到特定数目的位图块,其可以取决于单个分配条带内的可寻址的位图块的数目和单个位图块内的可寻址的数据库块的数目。例如,条带块可以将寻址4m(兆)数据库块的分配条带划分为32个位图块,其中每个位图块寻址128k数据库块的范围。

条带块167包括lba偏移168、或数据文件140中的条带142的开始。由条带块167参考的位图块映射到从lba偏移168开始的数据文件140的连续分配的数据库块。因此,给定诸如数据文件140之类的特定数据文件中的特定lba,包含用于lba的位的适当位图块可以通过遵循从上到下的分层结构得到。起始于第一数据库级,在文件图116中遵循特定文件号161以达到第二文件级。给定特定的lba,可以遵循位图lba图162以得到正确的位图块:从第二文件级到使用条带图166的第三条带级,并且从第三条带级到使用条带块167的第四位图级。

第四位图级

第四级或位图级包括位图块,也简单地称为位图。如位图块164a所示,位图块中的每个位映射到数据文件140内的特定数据库块,其可以被通过使用lba唯一地参考。每个位图块可以具有固定的最大尺寸,诸如16k字节或128k位,以寻址诸如128k数据库块之类的特定lba范围的数据库块。例如,位图块164a可以映射到从lba偏移168开始的第一128k数据库块,并且位图块164b可以映射到从lba偏移168加128k开始的下一128k数据库块。位图块164b的结构可以类似位图块164a的结构。虽然条带块167仅仅映射到图1c中的两个位图块,但是条带块167可以映射任何数目的位图块,所述位图块映射到在分配条带中符合的数据库块中,例如如上所述的32位图块。

继续在处理200示出的示例,数据库块144a是用于表行146a和146c的读访问的唯一受影响的数据库块。因此,映射到数据库块144a的位在适当的位图块、或位图块164a中被点亮(light)或设置为1。因此,如位图块164a所示,第一位被设置为1以指示对于数据库块144a的最新的访问活动。第二位仍然是0,指示数据库块144b最近没有被访问。“最近”的时间段可以取决于每个周期性保存到存储器之间的时间段,如下面讨论的。剩余位类似地指示对于附加数据库块的最新的访问活动或不活动,其在图1c中没有被具体地示出。

在位图块164a中,每个位指示对于对应数据库块的任何类型的访问,诸如读访问、写或修改访问、或创建访问。在一些实施例中,每个位可以指示仅仅一个访问类型,而不是任何访问类型。在这种情况下,如果每个访问类型将要被在位图块中单独地跟踪,则用于每个访问类型的多个位图可以被存储,或若干位可以被保留用于每个访问类型。

因为位图级作为稀疏的位图池被动态地分配,因此存储器需求可以被保持合理的。使用仅仅单个位记录位图级的对于数据库块的访问,加速元数据操作同时最小化存储器尺寸。通过在特定不活动期后释放位图块来抑制位图块增加。此外,响应于低的存储器条件,位图块也可以被强制地保存到存储器和释放。

热图的存储的表示

返回到图1a,元数据表空间132是可以由数据库管理系统100自动地生成以便存储系统元数据的表空间。当用户数据表空间130是小的文件表空间时,元数据表空间132可以包含热图150,由诸如热图160之类的周期性地保存的内存热图表示生成的热图的存储的表示。热图150可以被具体地存储在特别的统计片段中,如下面讨论的。

保存到小的文件表空间

进行到图1d,图1d是描述根据实施例的将位图块保存到存储的表示的示例的方框图。图1d的图103包括位图块刷新历史165a和统计片段170。统计片段170包括片段头171、片段自由空间位图172、和热图150。热图150包括统计lba图152、统计块154a、和统计块154b。统计lba图152包含文件和条带概要图155、图块156a、和图块156b。统计块154a包括头157、记录158a、记录158b、记录158c、记录158d、记录158e、记录158f、记录158g、和记录158h。参考图1d,类似编号的元件可以对应于图1a中的相同的元件。

统计片段结构

统计片段170可以是为存储访问统计量优化的特殊类型的元数据片段。除包括范围图、片段聚合、和通常存储在片段头中的其它数据之外,片段头171也可以包括来自于数据117的聚合的访问统计量和指向特定于统计片段的元数据结构的指针,诸如片段自由空间位图172和文件和条带概要图155。片段自由空间位图172可以指示统计片段170内的自由范围。每个范围可以被设置为固定大小,诸如1mb(兆字节)的分配块。例如,对于16kb的分配块大小,范围可以对应于64分配块。统计片段170的部分可以在创建时被预分配,包括片段头171、片段自由空间位图172、文件和条带概要图155、和图块和统计块的初始分配。

类似内存表示,用于热图150的存储的表示的元数据也被以分层结构组织。统计lba图152可以用来得到包括用于给定数据库块lba的访问统计量的统计块。在第一文件和条带级,文件和条带概要图155映射到一个或多个图块,诸如图块156a,其每个都特定于在给定数据文件中的给定分配条带。

在第二块范围级,图块156a还可以将分配条带划分成许多范围,例如72个范围,每个与诸如统计块154a之类的单个统计块相关联。图块可以被组织成单链接的列表,如由从图块156a到图块156b的链接所示,允许新的图块根据需要被动态地增加。虽然用于给定数据库块lba的图块可以通过遵循链接的列表得到,但是使用诸如文件和条带概要图155之类的索引的恒定的时间查找是优选的,出于执行原因。片段头171和片段自由空间位图172可以被用于动态存储器管理。

在第三统计块级,诸如统计块154a-154b之类的每个统计块可以包括许多记录,诸如记录158a-158h,包含用于对应数据库块的访问统计量。记录158a-158h可以是固定尺寸,例如20字节,以存储访问时间戳和其它数据。每个统计块可以填充统计片段170中的单个范围。因此,在单个统计块中的特定数目的记录可以取决于范围的大小和每个统计记录的大小。注意范围内的统计块可以不一定参考与内存位图块相同数目的数据库块。如图记录一样,可以动态地分配统计块,并且可以提供初始分配,诸如统计块的8个范围。

位图块刷新

参考位图块刷新历史165a,提供用于单个位图块的三个先前刷新事件的示例历史。因此,位图块164a的刷新出现在第一时间戳12-29-2012的4:00pm处、在第二时间戳01-01-2013的1:00pm处、和在第三时间戳01-01-2013的2:00pm处。在第三时间戳处的位图块164a的内容可以对应于图1c中的位图块164a的状态。

对于1小时的周期性的热图保存周期,每个时间戳指示用于关联的位图的1小时访问时间窗口的结束。因此,位图块刷新历史165a指示在2012-12-29的3:00到4:00pm之间访问数据库块144b,并且在2013-01-01的12:00pm到1:00pm之间并且又从1:00pm到2:00pm访问数据库块144a。与空的位图、或填充零的位图相关联的时间戳不存在于位图块刷新历史165a中,因为空的位图简单地指示在由时间戳指示的时间窗口期间缺乏访问活动。

如上所述,在统计lba图152中分层的元数据可以被查阅以得到用于给定数据库块lba的统计块。因为位图块刷新历史165a特定地涉及映射到数据库块144a的位图块164a,统计lba图152可以被利用以得到统计块154a作为映射到反映在头157中的数据库块144a。因此,记录158a映射到数据库块144a、记录158b映射到数据库块144b,等等。

在第一时间戳处刷新位图块164b以后,利用2012-12-29,4:00pm的时间戳更新记录158b的最后一次访问时间戳,如图所示。在第二时间戳处刷新位图块164a以后,利用2013-01-01,1:00pm的时间戳更新记录158a的最后一次访问时间戳。在第三时间戳处刷新位图块164a以后,利用2013-01-01,2:00pm的时间戳更新记录158a的最后一次访问时间戳,如图所示。剩余的记录158c-158h指示空的最后一次访问时间戳,其可以指示在初始创建或未初始化的数据库块后无访问。虽然每个记录158a-158h仅仅包括单个最后一次访问时间戳统计量,但是其它最后一次访问时间戳能够包括在每个记录中,诸如最后一次读取时间戳、最后一次修改的时间戳、和创建时间戳。每个时间戳可以是32位、64位、或任何其他尺寸的时间戳值。此外,代替仅仅时间戳,可以写入明确的时间窗口。

热图刷新

通过遵循以上对热图的内存表示中的每个位图块的刷新处理,热图可以被保存为存储的表示。为了加速热图刷新处理,可以临时地脱机采取数据库,延迟数据库请求直到热图刷新处理完成。如果不希望延迟数据库请求则也可以在热图刷新处理期间保持数据库在线。周期性的保存循环的长度可以从讨论的1小时循环调整以达到在时间窗口粒度和数据库开销之间的期望的折衷。因为统计块和大部分元数据可以被动态地分配,因此存储器尺寸可以被最小化。

以上处理合并访问统计量以使得对于影响的数据库块仅仅存储最后一次访问时间戳。但是,在一些实施例中,可以期望随时间记录访问统计量,而不是仅仅最后一次访问时间。在这种情况下,内存表示可以作为附加到统计量历史日志的多个周期性的快照被写入。此日志可以尤其可用于数据库性能简述。映射到相同数据库块范围的位图块的逻辑or可以用于将日志合并到用于特定时间窗口的热图,诸如特定的天或星期。

保存到大的文件表空间

在用户数据表空间130是大的文件表空间而不是小的文件表空间的情况中,热图150可以被集成为用户数据表空间130的一部分而不是被分别地存储在元数据表空间132中。统计片段170所示的结构可以作为用户数据表空间130的元数据块被写入。另外,为了改善i/o性能,条带所需的所有统计块和元数据可以被预分配在每个分配条带的单个连续预留的头区域中。作为例外,第一分配条带可以以类似于统计片段170的方式动态地配置元数据,由此降低用于使用大的文件表空间的较小数据库的先期存储需求。

嵌入在数据库块中的元数据

在另一个实施例中,用户数据片段中的每个数据库块可以包含预留的元数据头区域以将关联的访问统计量直接嵌入在相同的数据库块内,避免一起需要单独的元数据结构。虽然保存热图的此方法概念上是简单的,但是也可以需要改变现有数据库格式,这使得此方法难以对于现有数据库管理系统实施。此外,因为统计量元数据跨每个数据库块分散,因此统计量元数据操作可以对数据库放置繁重的i/o负载,降低了数据库性能。

释放位图块

在如上所述可以依照诸如每小时一次的调度之类的周期性调度进行的保存步骤后,包括热图160的热图的内存表示中的位图块被重新设置到空的或零状态并且可以被从存储器112释放。如果存储器112进入低的存储器条件,则保存任务可以被排列在周期性调度的前面以刷新来自于存储器112的位图块,其中空的热图可以被立即释放并且填充的热图可以被保存到存储器。

只在特定数目的保存循环出现而没有对位图块的任何活动以后可以从存储器112中释放位图块。例如,涉及数据117中的保存循环的统计量可以对于每个保存循环被查阅并且更新。当分配的位图块在特定数目的循环(例如2个循环)之后保持空时,空的位图块可以被返回到自由列表118。但是,如上所述,可以响应于低的存储器条件释放位图块,低的存储器条件可以出现在空状态中在达到某些循环数之前。

具体化访问统计量

为了检索用于特定数据库块的访问统计量,可以首先在内存中搜索对应于数据库块的热图位以确定用于本保存循环的活动。如果热图位不被在热图160或另一个内存热图中参考,则盘上热图150可以被查阅以确定用于过去的保存循环的活动,使用统计lba图152以定位包含用于特定数据库块的统计量的特定统计块。用于各个数据库块的以上处理可以被重复以收集用于包含多个数据库块的较高级数据库元素,诸如数据文件、分配条带、表空间、和其它数据库结构,的统计量。可替换地,可以使用在数据117中的聚合的访问统计量,其也可以被保存到统计片段170的片段头171中。

为了检索用于行和对象级中的元素的访问统计量,可以使用用于包含元素的数据库块的热图位。例如,如果热图位开启或点亮,则知道数据库块中的至少一个行具有活动,其可以被当做在具有活动的数据库块中的所有行的估计。另一方面,如果热图位关闭或为零,则知道数据库块中的所有行没有活动。

在对于适当的元素收集统计量后,统计量可以经由定义的数据库视图、pl/sql包、或其它接口被具体化到用户和应用。对于在最低的行和对象级跟踪访问统计量、在细粒数据库块级将访问统计量记录到热图中、并且在任何期望的级将访问统计量具体化到用户和应用,可以支持高级特征,诸如数据库性能简述和用于归档不活动数据的自动的或引导的信息生命周期管理。

硬件概要

根据一个实施例,由一个或多个专用的计算设备执行这里描述的技术。专用的计算设备可以是硬线的以执行技术,或可以包括诸如被永久编程为执行技术的一个或多个特定用途集成电路(asic)或现场可编程门阵列(fpga)之类的数字电子设备,或可以包括被编程以按照固件、存储器、其它存储器中的程序指令执行技术的一个或多个通用的硬件处理器、或组合。此类专用的计算设备也可以组合具有自定义编程以实现技术的自定义硬线逻辑、asic、或fpga。专用的计算设备可以是桌上型计算机系统、便携式计算机系统、手持设备、网络设备或合并硬线和/或程序逻辑以执行技术的任何其它设备。

例如,图3是示出了可以实施本发明的实施例的计算机系统300的方框图。计算机系统300包括总线302或用于通信信息的其它通信机制,和用于处理信息的耦接到总线302的硬件处理器304。硬件处理器304可以是例如通用的微处理器。

计算机系统300也包括诸如随机存取存储器(ram)或其它动态存储器之类的耦接到总线302的用于存储要由处理器304运行的信息和指令的主存储器306。主存储器306也可以用于在执行由处理器304运行的指令期间存储临时变量或其它中间信息。此类指令当存储在处理器304可访问的非瞬时存储介质中时,将计算机系统300渲染到被定制以执行指令中指定的操作的专用机器。

计算机系统300还包括只读存储器(rom)308或用于存储用于处理器304的静态信息和指令的耦接到总线302的其它静态存储器设备。诸如磁盘或光盘之类的存储设备310被提供并且耦接到总线302以用于存储消息和指令。

计算机系统300可以经由总线302被连接到诸如阴极射线管(crt)之类的用于向计算机用户显示信息的显示器312。包括字母数字和其它键的输入设备314被耦接到总线302以向处理器304通信信息和命令选择。另一个类型的用户输入设备是光标控制316,诸如鼠标、跟踪球、或用于向处理器304通信方向信息和命令选择并用于控制光标在显示器312上的移动的光标方向键。此输入设备通常具有两轴的两个自由度,第一轴(例如,x)和第二轴(例如,y),其允许设备指定平面中的位置。

计算机系统300可以利用定制的硬线逻辑、一个或多个asic或fpga、固件和/或与计算机系统结合以使得或编程计算机系统300成为专用机器的程序逻辑执行这里描述的技术。根据一个实施例,由计算机系统300响应于处理器304运行包含在主存储器306中的一个或多个指令的一个或多个序列执行这里的技术。此类指令可以从诸如存储设备310之类的另一个存储介质被读到主存储器306。包含在主存储器306中的指令序列的运行使得处理器304执行这里描述的处理步骤。在可替换实施例中,硬线电路可以代替软件指令被使用或与软件指令结合使用。

这里使用的术语“存储介质”是指存储使得机器以特定方式操作的数据和/或指令的任何非瞬时的介质。此类存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如诸如存储设备310之类的光盘或磁盘。易失性介质包括动态存储器,诸如主存储器306。存储介质的常见形式包括例如,软盘、软磁盘、硬盘、固态驱动器、磁带、或任何其它磁数据存储介质、cd-rom、任何其它光数据存储介质、具有孔图案的任何物理介质、ram、prom和eprom、flash-eprom、nvram、任何其它存储器芯片或盒。

存储介质与传输介质不同但是可以结合传输介质被使用。传输介质参与在存储介质之间传输信息。例如,传输介质包括同轴电缆、铜线和光纤,包括总线302的线路。传输介质也可以采取声波或光波的形式,诸如那些在放射波和红外线数据通信期间生成的。

各种形式的介质可以被包含在向用于执行的处理器304传送一个或多个指令的一个或多个序列中。例如,指令可以最初被携带在远程计算机的磁盘或固态驱动器上。远程计算机可以加载指令到它的动态存储器中并将指令通过电话线利用调制解调器发送。计算机系统300本地的调制解调器可以在电话线上接收数据并且使用红外线发送器将数据转换到红外信号。红外检测器可以接收在红外信号中携带的数据并且适当的电路可以在总线302上放置数据。总线302将数据携带到主存储器306,处理器304从其中检索并运行指令。由主存储器306接收到的指令可以在由处理器304运行之前和之后可选地被存储在存储设备310中。

计算机系统300也包括耦接到总线302的通信接口318。通信接口318提供耦接到被连接到局域网络322的网络链路320的双向数据通信。例如,通信接口318可以是综合服务数字网(isdn)卡、电缆调制解调器、卫星调制解调器、或提供到对应类型的电话线的数据通信连接的调制解调器。作为另一个示例,通信接口318可以是向兼容的lan提供数据通信连接的局域网(lan)卡。也可以执行无线链路。在任何此类实施方式中,通信接口318发送并接收传送表示各种类型信息的数字数据流的电的、电磁的或光信号。

网络链路320通常经由一个或多个网络向其它数据设备提供数据通信。例如,网络链路320可以经由局域网络322向主机计算机324或由互联网服务供应商(isp)326操作的数据装置提供连接。isp326又经由现在普通被称为“互联网”328的全球数据包数据通信网络提供数据通信业务。局域网络322和互联网328两者都使用传送数字数据流的电的、电磁的或光信号。往返于计算机系统300传送数字数据的经由各种网络的信号和网络链路320上并经由通信接口318的信号是传输介质的示例形式。

计算机系统300可以经由网络、网络链路320和通信接口318发送消息并接收包括程序代码的数据。在互联网示例中,服务器330可以经由互联网328、isp826、局域网络322和通信接口318发送用于应用程序的请求码。

接收到的代码可以被处理器304按照接收的运行,和/或被存储在存储设备310或其它非易失性存储器中用于稍后运行。

在上述说明书中,已经参考可以在实施方式之间不同的许多细节描述了本发明的实施例。因此,本发明唯一和专用的、并且由申请人预期是本发明的指示是从此申请发出的权利要求的集合,以此类权利要求发出的特定形式,包括任何后续的校正。这里对包含在此类权利要求中的术语的任何明确地阐述的定义将决定此类术语用在权利要求中的意义。因此,限制、元件、属性、特征、优点或在权利要求中没有明确叙述的属性不应当以任何方式限制此类权利要求的范围。因此,说明书和附图应当被认为是说明性的,而不是限制的意义上的。

附加公开

在实施例中,一种方法包括:接收用于数据库的数据库命令;执行数据库命令,其中执行数据库命令访问一个或多个数据库元素,所述一个或多个数据库元素被存储在一个或多个受影响的数据库块中;对于受影响的数据库块,在块级热图中记录对应于所述访问的活动;其中所述方法是由一个或多个计算设备执行的。

在实施例中,所述记录通过如下操作执行:在所述块级热图的内存表示内设置与所述受影响的数据库块的活动对应的位;周期性地将所述块级热图的内存表示保存到所述块级热图的存储的表示;以及在保存之后重新设置所述块级热图的内存表示。

在实施例中,所述块级热图的内存表示包括动态分配的位图池。

在实施例中,所述块级热图的内存表示包括将数据库的逻辑块地址映射到动态分配的位图的分层元数据结构。

在实施例中,所述块级热图的存储的表示是在数据库的多个数据库实例之间共享的单个副本。

在实施例中,所述保存到存储的表示通过将所述内存表示合并到每个受影响的数据库块的一个或多个最后一次访问时间戳来执行。

在实施例中,所述保存到存储的表示通过将所述内存表示作为附加到日志的周期性快照而写入来执行。

在实施例中,所述活动包括对于受影响的数据库块的读取。

在实施例中,所述活动包括对于受影响的数据库块的写入。

在实施例中,所述活动包括受影响的数据库块的创建。

在实施例中,所述一个或多个元素是受所述动作影响的行格式化的表的一个或多个行。

在实施例中,所述一个或多个元素是受所述动作影响的列格式化的表的一个或多个列。

在实施例中,所述一个或多个元素是受所述动作的影响的一个或多个数据库对象。

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