DB2 10.5 for Linux, UNIX, and Windows

自动存储器表空间管理存储器扩充的方式

如果您正在使用自动存储器表空间,那么数据库管理器将根据需要来创建和扩展容器。如果您向表空间使用的存储器组添加存储器,那么将自动创建新容器。但是,使用新存储空间的方式取决于您是否重新平衡(REBALANCE)表空间。

创建自动存储器表空间时,如果空间足够的话,数据库管理器将在它定义为使用的存储器组的每个存储器路径上创建一个容器。在耗尽表空间中的所有空间之后,数据库管理器将通过扩展现有容器或者通过添加新的容器分割集来自动增大表空间大小。

自动表空间的存储器是在存储器组级别进行管理的;即,您向数据库的存储器组添加存储器,而不是像处理 DMS 表空间那样对表空间添加存储器。向表空间使用的存储器组添加存储器时,自动存储器功能将根据需要创建新容器以容纳数据。但是,已存在的表空间将不会立即开始耗用新路径中的存储器。需要增大表空间时,数据库管理器将首先尝试在表空间的最后一个范围中扩展那些容器。“范围”是指给定分割集的所有容器。如果此操作成功,那么应用程序将开始使用这个新空间。但是,如果扩展容器的尝试失败(例如,当一个或多个文件系统已满时,就会发生这种情况),那么数据库管理器将尝试创建新的容器分割集。只有在这个时刻,数据库管理器才会考虑将新添加的存储器路径用于表空间。图 1 演示了此过程。
图 1. 自动存储器根据需要添加容器的方式
在 DB2 9.5 中添加存储器路径
在上图中:
  1. 最初,表空间包含两个尚未达到最大容量的容器。新存储器路径是您将 ALTER STOGROUP 语句与 ADD 子句配合使用添加至存储器组的。但是,新的存储器路径尚未被使用。
  2. 最初的两个容器达到它们的最大容量。
  3. 添加了新的容器分割集,它们开始填充数据。
  4. 新分割集中的容器达到它们的最大容量。
  5. 由于没有空间可供容器增大,因此添加新的分割集。
如果要让自动存储器表空间立即开始使用新添加的存储器路径,可以使用 ALTER TABLESPACE 命令的 REBALANCE 子句来执行重新平衡。如果对表空间进行重新平衡,那么将在新添加的存储器中的容器和分割集之间重新分配数据。图 2 对此作了说明。
图 2. 添加新存储器并对表空间进行重新平衡的结果
添加新的存储器并对表空间进行重新平衡
在此示例中,重新平衡操作将现有分割集扩展到新的存储器路径(而不是创建新的分割集)以便根据需要创建容器,然后在所有容器之间重新分配数据。