DB2 10.5 for Linux, UNIX, and Windows

数据库管理的空间

在 DMS(数据库管理的空间)表空间中,数据库管理器控制存储空间。与 SMS 表空间不同,系统将根据您创建 DMS 表空间时指定的容器定义在文件系统中预先分配存储器空间。

要点:V10.1 FP1 开始,在用户定义的永久表空间中不推荐使用 DMS 表空间类型, 在以后的发行版中可能会将其除去。对于目录和临时表空间,不推荐使用 DMS 表空间类型。有关更多信息,请参阅已经不推荐使用 DMS 永久表 空间

DMS 存储模型由数目有限的文件或设备组成,这些文件或设备的空间由数据库管理器管理。您决定在创建容器时要使用哪些文件和设备,并且为那些文件和设备管理空间。

包含用户定义的表和数据的 DMS 表空间可以被定义为大型(缺省)常规表空间,这些表空间可以存储任何表数据或索引数据。常规表空间的最大大小是 512 GB,每页的大小为 32 KB。大型表空间的最大大小是 64 TB。有关采用其他页大小的常规表空间的最大大小,请参阅 SQL 和 XML 限制

使用 DMS 表空间时,容器有两个选项:文件和原始设备。当使用文件容器时,数据库管理器在创建表空间时分配整个容器。这种一开始就分配整个表空间的结果是,即使由文件系统执行分配,物理分配也通常(但不保证)是连续的。当使用原始设备容器时,数据库管理器控制整个设备,并总是确保扩展数据块中的页连续。(扩展数据块大小是指数据库管理器在使用另一容器前写入容器的页数。)

规划 DMS 表空间

在设计 DMS 表空间和容器时,应该考虑下列事项:

  • 数据库管理器使用条带分割来确保数据均匀地分布在所有容器上。此操作将数据均匀分布在表空间中的所有容器上,并以循环方式将表的扩展数据块分布在所有容器上。将数据写入多个容器时,建议执行 DB2® 条带分割。如果您选择实现磁盘条带分割以及 DB2 条带分割,那么表空间的扩展数据块大小和磁盘的分割大小应该相同。
  • 与 SMS 表空间不同,组成一个 DMS 表空间的容器不必大小相同;但是,通常建议不要这样做,因为会导致在容器间不均匀地进行条带分割,并且会降低性能。如果任何容器已满,DMS 表空间会使用其他容器中的可用空间。
  • 因为空间是预分配的,所以在能够创建表空间之前,该空间必须是 可用的。当使用设备容器时,该设备也必须有足够的空间以便存储容器定义。每个设备上只能定义一个容器。为避免浪费空间,设备的大小应该等于 容器的大小。例如,如果设备的存储容量相当于 5000 页,并且将设备容器大小定义为 3000 页,那么在该设备上,将有 2000 页不可用。
  • 在缺省情况下,每个容器中都保留一个扩展数据块作为附加的必需空间。只使用整个扩展数据块,因此为了对空间进行最优管理,可以使用如下公式来帮助您确定当分配容器时要使用的适当大小:
    • 扩展数据块大小 * (n + 1)
    其中,扩展数据库大小是表空间中每个扩展数据块的大小,而 n 是您要在该容器中存储的扩展数据块数目。
  • DMS 表空间的最小大小是五个扩展数据块。
    • 在表空间中,有三个扩展数据块保留给开销使用:
    • 要存储任何用户表数据,至少需要两个扩展数据块。(这些扩展数据块是一个表的规则数据所必需的,但不是任何索引、长字段或大对象数据所需的,它们需要自己的扩展数据块。)

    试图创建小于五个扩展数据块的表空间将产生错误 (SQL1422N)。

  • 设备容器必须使用带“字符型特殊接口”的逻辑卷,而不是物理卷。
  • 在 DMS 表空间中可以使用文件来代替设备。V9.5 中的缺省表空间属性 NO FILE SYSTEM CACHING 允许文件对设备执行关闭操作,这样做的好处是不需要设置设备。有关更多信息,请参阅不使用文件系统高速缓存的表空间
  • 如果工作负载涉及到 LOB 或 LONG VARCHAR 数据,那么可通过文件系统高速缓存改进性能。
    注: 数据库管理器的缓冲池不缓冲 LOB 和 LONG VARCHAR。
  • 某些操作系统允许拥有大小超过 2GB 的物理设备。应该考虑将物理设备划分为多个逻辑设备,以使任何容器都不超过操作系统允许的大小。

当使用 DMS 表空间时,您应考虑将每个容器与不同的磁盘相关联。这使表空间容量可以更大,并且能够利用并行 I/O 操作。

CREATE TABLESPACE 语句在数据库中创建新的表空间,向表空间分配容器,并在目录中记录表空间定义和属性。当创建表空间时,扩展数据块大小被定义为许多连续页。只有一个表或对象(例如,索引)能够使用任何一个扩展数据块中的页。将逻辑表空间地址映射中的扩展数据块分配给表空间中创建的所有对象。扩展数据块分配通过空间映射页进行管理。

逻辑表空间地址映射中的第一个扩展数据块是包含内部控制信息的表空间的头部。第二个扩展数据块是表空间的空间映射页 (SMP) 的第一个扩展数据块。SMP 扩展数据块以固定间隔方式分布在表空间中。每个 SMP 扩展数据块都是当前 SMP 扩展数据块到下一 SMP 扩展数据块的扩展数据块位图。位图用来跟踪正在使用哪些中间扩展数据块。

SMP 后面的一个扩展数据块是表空间的对象表。对象表是一个内部表,它跟踪表空间中存在哪些用户对象,以及它们的第一个扩展数据块映射页 (EMP) 扩展数据块的位置。每个对象都有其自己的 EMP,它提供了指向该对象的每一页的映射,这些映射存储在逻辑表空间地址映射中。图 1 说明了如何在逻辑表空间地址映射中分配扩展数据块。

图 1. 逻辑表空间地址映射
逻辑表空间地址映射中的扩展数据块