ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 通过 SAP 的 DBACockpit 工具实现 DB2 深度压缩

通过 SAP 的 DBACockpit 工具实现 DB2 深度压缩

原创 Linux操作系统 作者:ArtCode 时间:2009-04-16 16:16:41 0 删除 编辑
SAP 的 DBACOCKPIT 数据库管理工具几乎胜任所有数据库管理的工作,也集成了深度压缩(deep compression)的技术这项 DB2 的新特性。本文将以实际案例解释如何通过 SAP 的 DBACockpit 工具实现 DB2 深度压缩并验证效用。

SAP 的 DBA Cockpit 简介

IBM 是 SAP 最重要的合作伙伴之一,两者的合作关系触及到很多层面,包括硬件、软件和服务等,而 DBA Cockpit 是 SAP 中的一个重要的数据库监控和管理工具。 DBA Cockpit 与 DB2 之间实现了紧密集成, 使用 DBA Cockpit 可以对 DB2 进行常规的管理,同时,许多 DB2 的新特性在 DBA Cockpit 中都得到了很好的支持。

访问 DBA Cockpit 很简单,在 SAP 登录界面中输入事务代码 DBACOCKPIT 或者 ST04,即可进入 DBA Cockpit 的使用界面。


图 1. DBA Cockpit 界面
图 1. DBA Cockpit 界面

如图 1 所示,在左边侧边栏的浏览树中,我们可以看到 DBA Cockpit 的功能主要包括几个方面。

  • 性能监控

    在 DBA Cockpit 的这个功能模块,用户可以收集和监控包括系统和 DB2 所有数据对象出的数据和历史数据。这是一个全面而又复杂的信息窗口。

  • 空间管理

    在这个模块,用户可以查看和管理 DB2 的空间对象。比如创建表空间,删除存储器等。

  • 数据库的备份与恢复

    值得一提的是 DBA Cockpit 支持 DB2 的在线备份和压缩备份方式。

  • 参数配置

    这里可以查看和配置系统,DB,DBM,DB2 环境变量等参数。这里信息也很详尽。

  • 工作管理

    这是 DBA 的工作安排中心。

  • 系统报警

    DBA 可以通过预设阀值,监控系统参数,达到阀值时发出警告。

  • 诊断

    这个也是 DBA 经常使用的功能强大的模块。它提供了几种诊断工具。包括 DB2 的日志文件,SQL 执行解释,索引建议,死锁监控等等。

  • 工作负载管理
  • BI 管理

    在 BI 系统里面,SAP 支持 DB2 的分区组管理和 MDC 管理。 MDC 也是 DB2 特有的新特性。在以后的文章中我们也会介绍如何在 SAP 中采用这种特性管理数据。

利用该工具,DBA 可以在 SAP GUI 中对 DB2 UDB 进行几乎所有维护操作,使 SAP 的数据库管理任务变得更容易。

IBM 的深度压缩技术

深度压缩技术(deep compression)是 IBM 在 DB2 UDB V9 中引入的一项技术。该技术的使用可以显著节省磁盘存储空间、磁盘 I/O 次数,提高数据查询速度。

对表进行深度压缩时,DB2 会搜索每条记录中重复的连续字节,并用 12 位字符来代替这些重复的连续字节(连续字节可以是跨列的),12 位字符和重复的连续字节之间的映射关系被存储在“压缩字典”中,在进行表压缩之前压缩字典必须已经存在。

通常,DBA 可以用 CREATE 或 ALTER TABLE 语句启用深度压缩,但此时并不会进行表压缩,只有该表的压缩字典建立后,深度压缩才会生效。压缩字典的创建需要执行 non-inplace REORG 。另外,还可以用 INSPECT 命令来估计压缩产生的效益,压缩字典的大小等。

DBACockpit 实现深度压缩实例

前面已经说过,使用 DBA Cockpit 工具可以使数据库管理任务变得更容易。下面我们通过一个实例来介绍一下如何使用 SAP 的 DBACockpit 工具对一个数据库表进行深度压缩。

压缩评估

通常在对某个表启用深度压缩之前,需要评估表的压缩比率等信息来决定是否压缩该表。我们可以点击 DBACockpit->Space->Single Table Analysis 来查看某个表的信息。在本例中,我们来分析一下表 REPOSRC 的信息。


图 2. 查看目标表的信息
图 2. 查看目标表的信息

从表的详细信息我们可以看出,REPOSRC 表的总大小为 6,325,632KB,一共有 2,524,913 行。通常情况下,为了更多的节省空间,应该选择一些占用空间较多的表进行压缩,这样可以得到更好的压缩收益。

在查看了表 REPOSRC 的基本信息以后,我们还可以点击 Compression Status 标签查看表的当前压缩状态。


图 3. 查看目标表的当前压缩状态
图 3. 查看目标表的当前压缩状态

从图中我们可以看出该表的当前压缩字典大小以及估计压缩字典大小等参数均为 0,这表明该表以前既没有进行过深度压缩也没有进行过任何压缩比率的评估。

为了评估当前表的压缩率我们在工具栏中点击 Compression Check 按钮。这时弹出对话框询问用户执行压缩评估的方式。


图 4. 执行压缩检查
图 4. 执行压缩检查

压缩评估通常会花费一些时间,因此对于较大的表,我们建议使用 Start Immediately 和 Schedule at 方式来进行后台检查。对于比较小的表,我们可以直接选择 Run in Dialog 方式在前台运行。

在压缩检查完成以后我们可以观察到在 Compression Status 标签里的变化。从 Compression Check Results 一栏中可以看到最近一次进行压缩检查的信息。


图 5. 查看压缩检查信息
图 5. 查看压缩检查信息

从图中可以看到压缩字典的大小估计为 75,520 Byte,节省的页和字节数估计为 68% 。由此,我们可以看出如果对该表进行压缩,大量空间将被节省。

启用压缩

在对表 REPOSRC 进行深度压缩评估以后,根据压缩评估的结果,我们决定对表进行实际的压缩。首先,在 Compression Status 标签被选中的情况下,在工具栏中点击 Compression On/Off 按钮。此时,会弹出一个压缩选项对话框。


图 6. 开启压缩
图 6. 开启压缩

在压缩选项对话框中,我们看到,当前压缩没有被启用,且没有压缩字典产生。这时可以选择仅开启压缩,或者开启压缩后立刻进行离线表重组。尽管可以仅开启压缩,但是在压缩字典建好之前压缩并不会发生。构建压缩字典并压缩表中的现有数据,需要执行离线表重组,该操作可以通过在指定 KEEPDICTIONARY 或 RESETDICTIONARY 选项的情况下在 CLP 中执行 REORG 来实现。在 DBACockpit 中,我们可以通过选择 Enable Compression and Run REORG 选项开启压缩和离线重组。 DB2 V9.5 中引入了自动创建压缩字典(ADC)的新特性。如果一张表的数据量达到了一个阈值并且没有数据压缩字典,在对表开启压缩功能后,表的压缩字典是在第一次数据添加的时候创建,并成为表的一部分。如果一个新建的表启用压缩后,在有足够数据让表自动创建压缩字典之前可能需要一些时间。数据压缩字典创建的具体时间花费完全取决于有多少数据添加进这张表中。

在点击执行按钮以后,任务计划设定对话框弹出,这时可以选择重组的方式。


图 7. 选择重组方式
图 7. 选择重组方式

SAP 系统会默认选择 Use Temporary Tablespace 方式。 DB2 的深度压缩是针对数据表的行压缩,不直接存储在数据行中的数据将不能被压缩,因此我们一般不会选择 With Long Fields and LOB Data 选项。重组任务开始以后,我们可以通过在 sap gui 中运行 sm37 来查看重组任务的运行情况。

检查压缩结果

在重组任务执行结束以后,我们可以看到表压缩后的详细信息。


图 8. 查看压缩结果
图 8. 查看压缩结果

通过 Compression Status 标签,我们可以直观地看出深度压缩以后的具体统计信息,重组后生成的压缩字典大小为 75,008 Byte,通常这个值不会超过 150 KB 。每行的压缩比率为 3.2%,节省的页面大约有 68% 。这与当时压缩评估的值基本一致。

这样我们就通过 SAP 的 DBACockpit 实现了对一个表的深度压缩。与通过 DB2 CLP 实现深度压缩相比,直接使用 SAP 的 DBACockpit 显得更加直观,简化了 SAP 和 DB2 系统管理员的工作。

深度压缩的效益

通过实例我们可以看出,深度压缩最主要的效益体现在对磁盘空间的节省上。其次,因为表中行大小变小, DB2 内存页面可以放入更多的行, 磁盘 I\O 的性能也因此得到提高;同时, 因为缓冲池中也可以放入更多的行记录数, 缓冲池的命中率就会得到更高,查询性能也因此而得到提高。

在实现深度压缩的典型客户中,客户 A,对其 SAP 环境进行了更新,采用了 DB2 深度压缩以及其他一些 DB2 9 的新特性,系统中有些很大的数据表能达到 70% 的压缩,整个数据库的大小也减少了 43% ;而在查询效益上,大多数重要的在线事务的响应时间也提高了 20% 。

局限性

虽然 DB2 的深度压缩功能是如此强大,但并非所有数据库表都适合采用。这里列举了深度压缩的一些局限:

  • 深度压缩只支持可重组的表,像 Catalog 表就不能压缩。
  • 深度压缩只适用于存放在数据对象表空间的行,比如 LOB 数据不适合压缩,XML 不适合压缩。
  • 深度压缩不适合非常小的表,比如小于 100KB 的表,因为建立数据字典也需要存储开销,过小的表采用压缩节省的空间不一定比增加的数据字典大,一般大于 1MB 的表才会考虑压缩。
  • 深度压缩不适合一些经常大量更新的表。如果一张表写的比较频繁,表内容经常变换,数据字典也就需要频繁重组更新才能达到压缩的效果。这样的开销与节省的空间开销相比并不有利。

    结束语

    本文以一个简单的例子,演示了 SAP 的管理员如何直接通过 SAP 的管理工具 DBA cockpit,简单直观的实现对数据库表的深度压缩,并阐述了 DB2 深度压缩这项特性的效用和一些局限性。在将来的文章中,我们将会进一步阐述 DB2 新版本的其他新特性在 SAP 中的应用,以及 SAP 的管理员如何通过 SAP 的管理工具来维护 DB2 数据库。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15082138/viewspace-590665/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-08-05

  • 博文量
    269
  • 访问量
    558221