DB2 表空间与存储器组


表空间与存储器组

  • 通过表分区功能,可将表数据放在多个表空间中。
  • 通过使用此功能,存储器组可将表数据的一部分存储在快速存储器上,将表数据的余下部分存储在较慢存储器的一层或多层上。
  • 使用存储器组来支持多温度存储器,这会根据存储器类来确定数据的优先级。例如,可创建映射至数据库系统中的不同存储器层的存储器组。于是,所定义表空间与这些存储器组相关联。
  • 一个表空间只能与一个存储器组相关联,但一个存储器组可有多个表空间关联。

使表空间与存储器组相关联

通过使用 CREATE TABLESPACE 语句或 ALTER TABLESPACE 语句,可指定或更改表空间使用的存储器组。如果创建表空间时未指定存储器组,那么会使用缺省存储器组。

语法如下:

db2 create tablespace <new_ts_name> using stogroup <sg_name>

其中<new_ts_name>是新表空间,<sg_name>是关联存储器组。

将表空间移至新存储器组

  • 表空间移至新存储器组后,旧存储器组中的容器会标记为删除暂挂。
  • 落实 ALTER TABLESPACE 语句后,容器分配到新存储器组的存储器路径上,驻留在旧存储器组中的现有容器标记为删除暂挂,并且会启动隐式 REBALANCE 操作。此操作将容器分配到新存储器路径上,并将现有容器中的数据重新平衡到新容器中。
  • 要创建的容器的数目和大小取决于目标存储器组中的存储器路径数以及新存储器路径上的可用空间量。
  • 移动所有数据后,会删除旧容器。

示例:

  1. 新容器分配到目标存储器组的存储器路径上。
  2. 所有原始容器被标记为删除暂挂,新分配请求通过新容器得到满足。
  3. 执行了反向重新平衡,从路径上的容器移出的数据被删除。
  4. 以物理方式删除容器。

要将表空间移至另一存储器组,具体语法如下:
先创建两个存储器组:sg_source 和 sg_target:

db2 create stogroup sg_source on '/path1','/path2','/path3'
db2 create stogroup sg_target on '/path4','/path5','/path6'

创建数据库后,创建最初使用该 sg_source 存储器组的自动存储器表空间:

db2 create tablespace <tablespace_name> using stogroup sg_source

将自动存储器表空间移至 sg_target 存储器组:

db2 alter tablespace <tablespace_name> using sg_target


评论区(2)

  • 张倩茹

    非常好

    2021年3月25日 10:30 回复

  • tan

    非常好

    2021年3月24日 14:42 回复

评论