DB2 V10.1 for Linux, UNIX, and Windows

回收自动存储器表空间中未使用的存储器

当您减小自动存储器表空间的大小时,数据库管理器将尝试降低该表空间的高水位标记并减小表空间容器的大小。在尝试降低高水位标记时,数据库管理器可能会删除空容器并将已使用的扩展数据块移至靠近表空间开头的空闲空间。接着,将调整容器的大小,以使表空间中的空间总量等于或略大于高水位标记。

开始之前

您必须要有使用 DB2® V9.7 或更高版本创建的自动存储器表空间。可回收存储器在使用先前版本的 DB2 产品创建的表空间中不可用。您还可以使用 MON_GET_TABLESPACE 表函数来查看数据库中的哪些表空间支持可回收存储器。

关于此任务

您可以减小以各种方式启用了可回收存储器的自动存储器表空间的大小。您可以指定数据库管理器通过下列方式来减小表空间:

无论在哪种情况下,数据库管理器都将尝试通过将扩展数据块移至表空间开头来减小大小,如果有足够的空闲空间,这将降低表空间的高水位标记。移动扩展数据块完成后,表空间大小将减小到新的高水位标记。

使用 ALTER TABLESPACE 语句的 REDUCE 子句来减小自动存储器表空间的表空间大小。如上所述,您可以指定要将表空间减小的容量。
注:
  • 如果您未指定要将表空间减小的容量,那么将在不移动扩展数据块的情况下尽量减小表空间大小。数据库管理器将尝试通过首先释放存在暂挂删除的扩展数据块来减小容器大小。(某些“暂挂删除”扩展数据块可能由于可恢复性原因而无法被释放,因此,其中一些这样的扩展数据块可能会保留下来。)如果高水位标记先前在那些所释放的扩展数据块之间,那么将降低高水位标记,否则不会对其进行更改。接着,将调整容器的大小,以使表空间中的空间总量等于或略大于高水位标记。此操作本身通过带有 REDUCE 子句的 ALTER TABLESPACE 执行。
  • 如果您只想降低高水位标记,从而合并表空间中位置较低并且在使用中的扩展数据块,而不执行任何容器操作,那么可以使用带有 LOWER HIGH WATER MARK 子句的 ALTER TABLESPACE 语句。
  • 在 REDUCE 或 LOWER HIGH WATER MARK 操作的执行期间,您可以使用 ALTER TABLESPACE 语句的 REDUCE STOP 或 LOWER HIGH WATER MARK STOP 子句将其停止。这将落实任何已移动的扩展数据块,将高水位标记减小为它的新值,并将按新的高水位标记来调整容器大小。

限制

过程

要减小自动存储器表空间的大小,请完成下列步骤:

  1. 构造包含 REDUCE 子句的 ALTER TABLESPACE 语句。
    ALTER TABLESPACE table-space-name REDUCE reduction-clause
  2. 运行 ALTER TABLESPACE 语句。

示例

示例 1:最大程度地减小自动存储器表空间的大小。
    ALTER TABLESPACE TS1 REDUCE MAX

在本例中,指定了关键字 MAX 作为 REDUCE 子句的组成部分,从而表明数据库管理器应该尝试将最大数目的扩展数据块移至表空间开头。

示例 2:按当前表空间大小的百分比来减小自动存储器表空间。
    ALTER TABLESPACE TS1 REDUCE 25 PERCENT

这将尝试将表空间 TS1 的大小减小到原始大小的 75%(如果有可能的话)。