DB2 V9.7新特性 – 降低高水位标记(转:http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-1007kongzh/)

DB2 V9.7新特性 – 降低高水位标记

 

孔再华, 软件工程师, IBM 孔再华,IBM SAP Integration and Support Center 的成员。目前的工作包括利用 DB2 for Linux, UNIX, and Windows 的每个新版本测试和认证 SAP R/3,以及帮助客户在 DB2 环境中运行 SAP,帮助他们分析问题和进行故障检修。

 

简介: DB2 9.7 增加了很多新功能帮助用户更容易地管理数据库。在 9.7 之前的版本中,降低表空间高水位标记是一件比较麻烦的事情,需要使用多个命令。在 DB2 9.7 中提供了简单的降低高水位标记的功能,让数据库管理员的工作变得简单。高水位标记是表空间中的最高已分配页,处于高水位标记下的空闲页是不能被其他应用使用的。降低高水位有助于提高表空间的利用,提高数据库性能。

发布日期: 2010 年 7 月 12 日
级别: 初级
建议: 0 (添加评论)

表空间高水位标记(HWM)

高水位标记是一个应用广泛的术语,在很多的场合都会使用到,一般用以标记某一项指标的最高数值。DB2 中表空间高水位标记(HWM)是数据库管理存储器(DMS)表空间的特殊属性。表空间高水位标记是表空间中分配的最后一个扩展数据块之后的扩展数据块中第一页的页 。简单来说就是反映了表空间分配的最大空间。

图 1. 表空间 HWM

如图 2 所示,对象 1 被删除后,原先所占的扩展数据块成为空闲数据块,表空间中实际使用数据块是 0 到 2,9 到 14。真实使用到的数据页是小于高水位标记反映的分配空间的。为了能够使表空间高水位标记下的空闲数据块能被其他需求使用,必须降低高水位标记,减少表空间分配的大小,空间才能被释放出来。

图 3. 降低高水位标记

在清单 1 中,运行“db2 LIST TABLESPACES SHOW DETAIL”命令可以得到数据库中所有表空间的详细信息。这里摘取了其中一个表空间 LDE#DDICD 为例。用户需要关注的是其中四项。首先是“Tablespace ID”,在我们操作表空间的过程中,db2dart 工具是要以这个 ID 为参数的。其次是表的类型,清单 1 中展示的是数据库管理存储的表空间(Database managed space),只有这种类型的表空间才有高水位标记属性。最后看看已使用页(Used pages)和高水位标记(High water mark)的数值。如果相等,则说明高水位标记下没有空闲页可以被释放。如果高水位标记大于已使用页,则说明高水位标记下存在空闲页,而且也可以算出来。清单 1 中位于高水位标记下的空闲页为高水位标记 259086 减去已使用页 257994 等于 1092.

查看高水位标记信息

通过比较表空间的信息,能够筛选出可以降低高水位标记的表空间。但是对于不同的情况,这些表空间的高水位标记不一定都能被降低,还需要查看高水位标记的详细信息。这就要使用到 db2dart 工具。

清单 2. 高水位标记信息

使用”db2dart dbname /DHWM /TSI tbsid”命令可以查看表空间高水位标记的详细信息。其中 dbname 是数据库名称,“/TSI”用来指定表空间 ID(tbsid)。在输出结果中,可以看到在高水位标记下有两个空闲扩展数据块 266 和 267. 而占据高水位标记的数据块类型是 Table Data Extent。

获得降低高水位标记建议

清单 3. 降低高水位标记建议

通过“db2dart dbname /LHWM /TSI tbsid /NP 0”可以得到具体降低高水位标记需要执行的步骤。命令中最后的“/NP 0”指定想把高水位标记降低到具体数值。这里数字 0 表示尽可能降低高水位标记。这个参数指定的目标值不一定能够达到。一般情况下设置为 0,会使高水位标记降至尽可能低的位置。清单 3 中给出了具体的降低高水位标记的步骤和能够达到的目标。db2dart 找出了表空间中需要执行离线重组的表。这里要注意的是离线重组。表的在线重组可能会导致更高的高水位标记。

在清单 3 这个案例中表重组的过程还算是比较简单,只有一张需要重组的表。对于不同的表空间,db2dart 建议给出的降低高水位标记的步骤也会不同,用户按照建议完成即可。


回页首

9.7 降低高水位标记的新功能

相对于 9.7 之前降低高水位标记的步骤,9.7 中提供了更简单易用的降低高水位标记功能。只需要使用“db2 ALTER TABLESPACE“命令就可以达到效果。同时 DB2 还提供了两个表函数 MON_GET_TABLESPACE 和 MON_GET_EXTENT_MOVEMENT_STATUS 来获取和监控表空间以及数据块移动信息。下面通过一个案例来一步步熟悉这些新功能的使用方法。

获取表空间信息

使用“db2 LIST TABLESPACES SHOW DETAIL”命令获取表空间信息的用法之前已经阐述过,这里主要演示如何使用表函数 MON_GET_TABLESPACE。

清单 4. MON_GET_TABLESPACE 语法

图 4. MON_GET_TABLESPACE 输出列表

清单 5 中使用查询语句筛选出了所有高水位标记大于已使用页的表空间。查看 RECLAIMABLE_SPACE_ENABLED 这一栏,这是表空间的“可回收存储器”属性。如果是 1,则表示可回收。没有“可回收存储器”属性的表空间不能使用子句来减小或者降低高水位标记。

本次案例对象是采用了自动存储的表空间 TBS1,它的 RECLAIMABLE_SPACE_ENABLED 属性是 1,说明空间可以被回收。

降低高水位标记

在 DB2 97 中,回收表空间存储器只需要使用到“ALTER TABLESPACE”命令。首先了解“ALTER TABLESPACE”的相关语法:

清单 6. ALTER TABLESPACE 语法

清单 6 中展示了与回收表空间存储器相关的两个子句及其语法。其中 MAX 参数可以指定最大限度的降低高水位标记来释放空间。在运行 REDUCE 命令后,在数据块移动的过程中,也可以使用 STOP 参数来停止表空间移动。如果是 DMS 表空间,则需要先运行 LOWER HIGH WATER MARK 子句降低高水位标记,再运行 REDUCE 子句释放表空间。如果是启用了自动存储的表空间,直接运行 REDUCE 子句即可。

清单 7. 自动存储表空间

清单 8. DMS 表空间

本次案例中,表空间 TBS1 采用了自动存储,直接运行 REDUSE MAX 来最多的释放空闲空间。SQL 返回成功信息,但数据块的移动并没有结束。数据块移动所花费时间会受到环境的影响,会需要一定的时间,此过程也有可能会影响系统性能。如果需要停止数据块移动,使用 STOP 参数终止。

清单 9. 释放案例表空间 TBS1

监控数据块移动

监控数据块的移动,一种方法是通过“db2 get snapshot for tablespaces” 命令,查看表空间的状态。例如“Tablespace State = 0x’00080000’”表明表空间正在移动中。另一种方法是使用 DB2 97 中新的表函数 MON_GET_EXTENT_MOVEMENT_STATUS 获得表空间数据块移动的详细信息。

清单 10. MON_GET_EXTENT_MOVEMENT_STATUS 语法

和前面阐述的表函数 MON_GET_TABLESPACE 使用方法一样,tbsp_name 是表空间对象,如果是空值,则会对所有的表空间操作。member 的默认输入是 -1,指当前成员,如果是 -2,则是所有数据库成员。返回结果也是一张表。

图 5. MON_GET_EXTENT_MOVEMENT_STATUS 输出列表

清单 13 显示了 db2diag 记录的数据块移动的具体信息,包括表空间对象,开始和结束时间,移动结果等等,是诊断数据块移动的好工具。


回页首

总结

参考资料

学习

  • 通过 developerWorks Information Management 专区 学习关于 Information Management 的更多知识。在这里可以找到技术文档、how-to 文章、培训、下载、产品信息等等。
  • 通过 Information Management 专区 DB2 9 技术资源中心 了解 DB2 产品家族的更多产品信息和相关技术。
  • 通过 DB2 V9.7 信息中心,了解 DB2 的详细产品信息和相关技术等全面的内容。
  • 随时关注 developerWorks 技术活动 络广播

获得产品和技术

  • 使用可直接从 developerWorks 下载的 IBM 产品评估试用软件 构建您的下一个开发项目。
  • 现在可以免费使用 DB2。下载 DB2 Express-C,这是为 区提供的 DB2 Express Edition 的免费版本,它提供了与 DB2 Express Edition 相同的核心数据特性,为构建和部署应用程序奠定了坚实的基础。

讨论

孔再华,IBM SAP Integration and Support Center 的成员。目前的工作包括利用 DB2 for Linux, UNIX, and Windows 的每个新版本测试和认证 SAP R/3,以及帮助客户在 DB2 环境中运行 SAP,帮助他们分析问题和进行故障检修

文章知识点与官方知识档案匹配,可进一步学习相关知识 络技能树首页概览22464 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2010年6月20日
下一篇 2010年6月20日

相关推荐