数据库系统中的统计视图的管理的制作方法

文档序号:6454245阅读:270来源:国知局
专利名称:数据库系统中的统计视图的管理的制作方法
技术领域
本发明总的涉及数据库系统。更具体地,本发明涉及数据库系统中的 统计视图的管理。
背景技术
关系数据库系统在组织成行和列的表中存储数据。从而能够响应于用户命令有效和方便地存储和访问大量数据。典型地,以SQL(结构化查询 语言)语句,例如SELECT、 INSERT、 DELETE和UPDATE的形式提 交用户命令。由于SQL是说明性语言,即,SQL仅指定访问什么数据, 而不是如何访问该数据,所以数据库系统包括优化器,其对于访问数据的 不同方案进行规划并评估这些方案,以基于例如成本或规则选择一个方案 用于执行。对于基于成本的优化器,"正确的"方案(即考虑到资源、时间、或 两者组合的最低成本的方案)的挑选取决于对于优化器可用的统计信息 (即,关于要访问的基础数据的信息)。数据库系统通常保存一些非常基 础的统计信息,例如,基础表的大小和列数据分布。使用这些基础统计信 息,可精确评估某些操作,例如简单谓词("col=value")的成本。然而, 与某些操作相关的成^f艮难评估。例如,对于连接操作的基数(即,在结 果集中的行数)公知地难以评估。此外, 一旦错误评估对于连接操作的基 数,那么错误将传播到随后的操作。为了提高优化器的性能,数据库管理员可选择手动声明为了数据库系 统处理的各种操作而收集的统计信息相关视图(即,统计视图)。然而, 由于可为数据库系统声明的统计视图数目没有限制,所以在成^f艮快超过利益的情况下,手动声明和保存所有这些视图是不切实际的。例如,将需 要额外的存储装置来存储各种统计视图。此外,目前保存统计视图所涉及 的成本太高。此外,在编译执行方案时采用优化器在所有统计视图中搜索 的时间占有太多的负载。
此外,不仅需要对产生统计视图的处理自动化,而且还要均衡最小化 优化器错误的需求以及与产生和保存统计视图相关的成本。

发明内容
提供一种管理数据库系统中的统计视图的方法、计算机程序产品和系
统。所述方法、计算机程序产品和系统提供以下操作收集在所述数据库 系统中与工作负载的优化和执行相关的数据;和基于所收集的优化和执行 数据自动产生一个或多个统计视图的集,,所述工作负载包括多个子表达 式,所述一个或多个统计视图中的每一个对应于所述工作负载中的所述多 个子表达式中的一个。


图1是根据本发明一方面用于管理数据库系统中的统计视图的方法处 理流程图。
图2示出根据本发明一个实施方式的数据库系统。 图3描述根据本发明实施例用于管理数据库系统中的统计视图的方法 的流程图。
图4是可实现本发明实施例的数据处理系统的框图。
具体实施例方式
本发明总的涉及数据库系统,更具体地,涉及数据库系统中的统计视 图的管理。提供以下说明,以使得本领域普通技术人员能够制造和使用本 发明,并且在专利申请的上下文及其需求中提供以下说明。对于本领域普 通技术人员,对于这里所述的优选实施方式和一般原理和特征的各种修改将容易变得清楚。因此,本发明不限于所示的实施方式,但是可记录与这 里所述的原理和特征一致的更广泛的范围。
图1示出根据本发明一方面用于管理数据库系统中的统计视图的处理
100。在102,收集与数据库系统中的工作负载的优化和执行相关的数据。 工作负载是逻辑上分在一起的用以实现某个结果的一组命令,例如,SQL (结构化查询语言)语句。每个工作负载包括可以是SQL语句整体或一部 分的多个子表达式。与工作负载的优化和执行相关的数据可包括例如由数 据库系统中的优化器所评估的子表达式(例如,连接操作)的基数,以及 从子表达式的执行所获得的结果集的实际基数。
在104,基于所收集的优化和执行数据自动产生一个或多个统计视图 的集。所述一个或多个统计视图中的每一个对应于在工作负载中的多个子 表达式中的一个。统计视图包含与子表达式的结果相关的统计信息(例如, 基数、唯一值的数目、最频繁的值等)。相比之下,子表达式的具体化视 图包括子表达式的实际结果。
在一个实施方式中,所产生的统计视图的数目小于在工作负载中的子 表达式的数目。例如,仅对于优化器出现错误(例如不正确的基数评估, 即可以是无效谓词依赖性假设、较大n路连接操作等的结果)的那些子表 达式产生统计-f见图。也可以对于优化器经常遇到的或具有困难的那些子表 达式产生统计视图(例如,需要更多时间计算评估)。从而,均衡了与产 生统计视图相关的成本以及最小化优化器错误的需求。
图2示出根据本发明实施例的数据库系统200。数据库系统200包括 优化器202、执行引擎204、模块206和数据库208。在其他实施例中,数 据库系统200可包括附加数据库和组件(未示出)。
由优化器202接收工作负载210以用于处理。工作负载210可经由网 络(未示出)由连接至数据库系统200的客户端应用(未示出)提交。对 于工作负载210中的每个SQL语句,优化器202将规划执行方案,并选择 那些方案中的一个用于由执行引擎204执行。然后,通过模块206收集与 工作负载210的优化和执行相关的统计信息。基于所收集的优化和执行数据,模块206将自动产生一个或多个统计 视图的集。每个统计视图对应于工作负载210中多个子表达式中的一个。 这些统计视图可存储在数据库208中的目录(未示出)中。在其他实施例 中,模块206可以是优化器202的一部分。
为了均衡与产生和保存统计视图相关的成本以及最小化优化器错误的 需求,模块206并非对于工作负载210中的每个子表达式自动产生统计视 图。例如,仅对于由优化器202发生g的那些子表达式产生统计视图。 模块206可通过比较优化统计信息和执行统计信息来检测错误。
模块206也可通过检查和消除副本统计视图来减少在数据库系统200 中保存的统计视图数目。在与2个统计视图对应的子表达式相同或在一个 子表达式是另 一个子表达式的前缀时,统计视图是另 一个统计视图的副本。
在产生或批处理产生一个或多个统计视图的每个新的集之后,即在产 生一个或多个统计视图的几个新的集之后,可执行这种冗余检查。在确定 统计视图是否为副本时,模块206可认为统计视图已经产生的并保持在数 据库208中的目录中。并非删除新创建的统计视图,而是由于在预先存在 的统计视图中的统计信息可能失效,所以模块206消除预先存在的统计视 图。
也可以通过将非常类似的统计视图归纳在一个归纳的统计视图中来减 少统计^见图的数目。归纳的统计一见图是这样一个示图,其表示几个子表达 式EX" EX2,…,EXn的并且从可通过应用已知操作缩减为任意子表达 式EXj (其中i=l至n)的子表达式EX(j得到。例如,假设对于以伪SQL 码所写的以下子表达式中的每一个产生统计-f见图
SELECT C2 FROM Tl
WHERE Condition and CI = 5 GROUP BY C3 [1
SELECT C2 FROM Tl
WHERE Condition and CI = 7 GROUP BY C3 [2] 由于子表达式12仅是常数不同,所以有利于将基于那些子表达式 的统计视图归纳到独立于该常数的一个统计视图中。这种归纳的统计视图
9将表示同样以伪SQL码所写的以下子表达式 SELECT C2, CI FROM Tl
WHERE Condition GROUP BY C3, CI [3
然后,可删除对应于子表达式lj和2的统计视图。重要的是,概括统 计视图的决定必须与对于常数的精确统计的损失均衡。结果,与1^出表相 关的直方图查询可有助于判断归纳是否有利以及是否应该保存没有归纳的 统计视图。
类似的统计视图也可以通过将它们合并到覆盖所有基础子表达式的一 个组合统计视图来代替。例如,将对于以伪SQL码所写的以下子表达式4
和[5]产生的统计视图合并到由同样以伪SQL码所写的子表达式[6
表示的 一个统计浮见图中,如下
SELECT C2 FROM Tl
WHERE Conditionl and CI = 5 GROUP BY C3 14
SELECT C4 FROM Tl
WHERE Condition2 and CI = 7 GROUP BY C3 [5
SELECT C4, C2, CI FROM Tl
WHERE Conditionl or Condition 2 GROUP BY C3, CI 问
在消除副本统计视图时,可以批处理地或在产生一个或多个统计视图 的集之后进行统计4见图的归纳和合并。此外,模块206可一起执行所有这 些清除步骤。此外,由于在数据库系统200中可能存在预先存在的统计视 图,所以归纳和/或合并的视图是新产生的、预先存在的或两者组合。
图3示出才艮据本发明另一方面用于管理数据库系统中的统计视图的处 理300。在302,收集与工作负载的优化和执行相关的数据。在304基于所 收集的优化和执行数据自动产生一个或多个统计视图的集。然后,去除至 少一个副本统计一见图(306)。
在308形成一组或多组统计视图。在本实施例中,所述一组或多组的 每组包括至少2个统计视图。所述至少2个统计视图中的每个可以从一个 或多个统计视图的集或从一个或多个统计视图的预先存在的集选择。然后,将所述一组或多组统计视图中的至少一组归纳或合并到一个统计视图
(310)。
除了统计视图之外,数据库系统200也可包括实视图。通过使用数据 库系统200中的统计视图和实视图收集统计信息,模块206能够找到在实 视图和统计视图之间的对等性,并且潜在地将统计视图转换成实视图,反 之亦然。例如,如果统计视图是"hot"(即,常被优化器202使用),则 对于模块206值得将统计视图转换成具有准备好的和可用的结果数据的实 视图。相反情况也可以,很少使用的实视图可转换成统计视图,以节省空 间同时保存统计数据。
本发明可采用全部硬件实施方式、全部软件实施方式、或包含硬件和 软件元素的实施方式的形式。在一个方面中,本发明可以在包括但不限于 固件、驻留软件、微码等的软件中实现。
此外,本发明可采用从计算机可用或计算机可读介质可访问的计算机 程序的形式,所述介质提供由计算机或任意指令执行系统使用的或与其连 接的程序代码。为了本说明书的目的,计算机可用或计算机可读介质可以 是可包含、存储、通信、传播、传输由指令执行系统、装置或设备使用的 或与其连接的程序的任意装置。
所述介质可以是电子、磁、光学、电磁、红外或半导体系统(或装置 或设备)或传播介质。计算机可读介质的实例包括半导体或固态存储器、 磁带、可卸计算机磁盘、随M取存储器(RAM)、只读存储器(ROM)、 硬盘、和光盘。光盘的当前实例包括DVD、压缩盘-只读存储器 (CD-ROM)、和压缩盘-读/写(CD-R/W)。
图4中所述的是适用于存储和/或执行程序代码的数据处理系统400。 数据处理系统400包括通过系统总线406耦合至存储元件404a-b的处理器 402。在其他实施例中,数据处理系统400可包括多个处理器,并且每个处 理器可直接或通过系统总线间接耦合至一个或多个存储元件。
存储元件404a-b可包括在程序代码的实际执行期间采用的本地存储 器、海量存储器、和高速緩存,所述高速緩存提供至少一些程序代码的临时存储,以减少在执行期间必须从海量存储器提取代码的次数。如图所示,
输入/输出或I/O设备408a-b (包括但不限于,键盘、显示器、定点设备) 耦合至数据处理系统400。 I/O i殳备408a-b可直接或通过中间I/O控制器 (未示出)间接耦合至数据处理系统400。
在本实施例中,网络适配器410耦合至数据处理系统400,以使得数 据处理系统400能够通过通信链路412耦合至其他数据处理系统或远程打 印机或存储设备。通信链路412可以是专用网络或公共网络。调制解调器、 线缆调制解调器和以太网卡仅是几个当前可用的网络适配器类型。
已经描述了用于管理数据库系统中的统计视图的各种实施。然而,本 领域普通技术人员可容易认识到可对这些实施进行各种修改,并且任意改 变都在本发明的精神和范围内。例如,参照处理行为的特定顺序描述上述 处理流程。然而,许多所述处理^f亍为的顺序可改变,而不影响本发明的范 围或运行。因此,可通过本领域普通技术人员进行许多修改,而不脱离随 后权利要求的精神和范围。
权利要求
1.一种管理数据库系统中的统计视图的方法,该方法包括收集在所述数据库系统中与工作负载的优化和执行相关的数据,所述工作负载包括多个子表达式;和基于所收集的优化和执行数据自动产生一个或多个统计视图的集,所述一个或多个统计视图中的每一个对应于所述工作负载中的所述多个子表达式中的一个。
2. 如权利要求1所述的方法,其中所产生的统计视图的数目小于所 述工作负载中的子表达式的数目。
3. 如权利要求l所述的方法,还包括 从所述一个或多个统计-f见图的集去除至少一个副本统计^L图。
4. 如权利要求l所述的方法,还包括形成一组或多组统计视图,所述一组或多组统计视图中的每一组包括 来自所述一个或多个统计-f见图的集中的至少两个统计4见图;和将所述一组或多组统计视图中的至少一组归纳到一个统计视图中。
5. 如权利要求l所述的方法,还包括形成一组或多组统计视图,所述一组或多组统计视图中的每一组包括 来自所述一个或多个统计视图的集中的至少两个统计视图;和将所述一组或多组统计视图中的至少一组合并到一个统计视图中。
6. 如权利要求1所述的方法,其中所述数据库系统包括预先存在的 一个或多个统计-f见图的集,并且该方法还包括去除至少一个副本统计视图,所述至少一个副本统计视图来自所述一 个或多个统计-f见图的集或所述预先存在的一个或多个统计浮见图的集。
7. 如权利要求1所述的方法,其中所述数据库系统包括预先存在的 一个或多个统计-f见图的集,并且该方法还包括形成一组或多组统计^L图,所述一组或多组统计碎见图中的每一组包括 至少两个统计视图,所述至少两个统计视图来自所述一个或多个统计视图的集、所述预先存在的一个或多个统计视图的集、或两者;和将所述一组或多组统计视图中的至少 一组归纳到 一个统计视图中。
8. 如权利要求1所述的方法,其中所述数据库系统包括预先存在的 一个或多个统计视图的集,并且该方法还包括形成一组或多组统计视图,所述一组或多组统计视图中的每一组包括 至少两个统计视图,所述至少两个统计;f见图来自所述一个或多个统计一见图 的集、所述预先存在的一个或多个统计视图的集、或两者;和将所述一组或多组统计^L图中的至少一组合并到一个统计-f见图中。
9. 一种包括计算机可读介质的计算机程序产品,所述计算机可读介 质包括管理数据库系统中的统计视图的计算机可读程序,其中所述计算机 可读程序在计算机上执行时使得计算机执行以下步骤收集在所述数据库系统中与工作负载的优化和执行相关的数据,所述 工作负栽包括多个子表达式;和基于所收集的优化和执行数据自动产生一个或多个统计视图的集,所 述一个或多个统计视图中的每一个对应于所述工作负载中的所述多个子表 达式中的一个。
10. 如权利要求9所述的计算机程序产品,其中所产生的统计视图的 数目小于所述工作负载中的子表达式的数目。
11. 如权利要求9所述的计算枳一呈序产品,其中所述计算机可读程序 在计算机上执行时还使得计算机执行以下步骤从所述一个或多个统计浮见图的集去除至少一个副本统计视图。
12. 如权利要求9所述的计算机程序产品,其中所述计算机可读程序 在计算机上执行时还使得计算机执行以下步骤形成一组或多組统计视图,所述一组或多組统计4见图中的每一组包括 来自所述一个或多个统计^L图的集中的至少两个统计-f见图;将所述一组或多组统计视图中的至少一組归納到一个统计;观图中;和 将所述一组或多组统计;f见图中的至少一组合并到一个统计-f见图中。
13. 如权利要求9所述的计算机程序产品,其中所述数据库系统包括预先存在的一个或多个统计视图的集,并且所述计算机可读程序在计算机上执行时还使得计算机执行以下步骤去除至少一个副本统计;f见图,所述至少一个副本统计-f见图来自所述一 个或多个统计;现图的集或所述预先存在的一个或多个统计^L图的集。
14. 如权利要求9所述的计算机程序产品,其中所述数据库系统包括 预先存在的一个或多个统计视图的集,并且所述计算机可读程序在计算机 上执行时还使得计算机执行以下步骤形成一組或多组统计视图,所述一组或多组统计视图中的每一组包括 至少两个统计-现图,所述至少两个统计-f见图来自所述一个或多个统计;f见图 的集、所述预先存在的一个或多个统计一见图的集、或两者;将所述一组或多组统计^L图中的至少一组归纳到一个统计视图中;和 将所述一组或多组统计^L图中的至少一組合并到一个统计-f见图中。
15. —种管理统计视图的系统,该系统包括优化器,所述优化器可被操作以优化数据库系统中的工作负载; 耦合至所述优化器执行引擎,所述执行引擎可被操作以执行所述数据 系统中的工作负载;和耦合至所述优化器和所述执行引擎的模块,所述模块可被操作以 收集在所述数据库系统中与工作负载的优化和执行相关的数据, 所述工作负栽包括多个子表达式;和基于所收集的优化和执行数据自动产生一个或多个统计视图的 集,所述一个或多个统计视图中的每一个对应于所述工作负载中的所述多 个子表达式中的一个。
16. 如权利要求15所述的系统,其中所产生的统计视图的数目小于 所述工作负载中的子表达式的数目。
17. 如权利要求15所述的系统,其中所ii^莫块可被操作以 从所述一个或多个统计碎见图的集去除至少一个副本统计;阮图; 形成一组或多组统计视图,所述一组或多组统计-f见图中的每一组包括来自所述一个或多个统计4见图的集中的至少两个统计浮见图;将所述一组或多组统计^L图中的至少 一组归纳到 一个统计视图中;和 将所述一组或多组统计浮见图中的至少一组合并到一个统计浮见图中。
18. 如权利要求15所述的系统,其中所述数据库系统包括预先存在 的一个或多个统计-现图的集,并且所述模块可被操作以去除至少一个副本统计视图,所述至少一个副本统计视图来自所述一 个或多个统计视图的集或所述预先存在的一个或多个统计视图的集;形成一组或多组统计;f见图,所述一组或多组统计;f见图中的每一组包括 至少两个统计视图,所述至少两个统计视图来自所述一个或多个统计视图 的集、所述预先存在的一个或多个统计视图的集、或两者;将所述一组或多组统计视图中的至少 一组归纳到 一个统计^见图中;和将所述一组或多组统计4见图中的至少一组合并到一个统计浮见图中。
19. 如权利要求15所述的系统,其中所述模块是所述优化器的一部
全文摘要
提供一种管理数据库系统中的统计视图的方法、计算机程序产品和系统。所述方法、计算机程序产品和系统提供以下操作收集在所述数据库系统中与工作负载的优化和执行相关的数据;和基于所收集的优化和执行数据自动产生一个或多个统计视图的集。
文档编号G06F17/30GK101405727SQ200780009384
公开日2009年4月8日 申请日期2007年3月14日 优先权日2006年3月14日
发明者A·莱纳, C·P·祖扎特, D·C·齐利奥, M·坎迪尔, V·G·马克尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1