DB2 10.5 for Linux, UNIX, and Windows

表空间

表空间是一种存储结构,它包含表、索引、大对象和长型数据。它们用来将数据库中的数据组织成与数据在系统上的存储位置相关的逻辑存储器分组。表空间存储在数据库分区组中。

使用表空间来组织存储器有多个好处:
可恢复性
由于可以通过单一命令来备份或复原表空间中的所有对象,因此,通过将必须一起备份和复原的对象放入同一个表空间,可以使备份和复原操作更为方便。如果分区表和索引分布在多个表空间中,那么可以只备份或复原驻留在给定表空间中的数据分区和索引分区。
更多的表
可以在任何一个表空间中存储的表数是有限的;如果需要的表数超出表空间可以包含的表数,那么只需要为它们创建附加的表空间。
自动存储器管理
借助自动存储器表空间,可以自动管理存储器。数据库管理器根据需要创建并扩展容器。
能够在缓冲池中隔离数据,以便提高性能或内存利用率
如果您有一组需要频繁查询的对象(例如表或索引),那么可以使用单一 CRETAE 或 ALTER TABLESPACE 语句为这些对象所驻留在的表空间分配缓冲池。可以为临时表空间分配它们自己的缓冲池,以便提高排序或连接之类的活动的性能。在某些情况下,最好为很少访问的数据或者需要非常随机地访问非常大的表的应用程序定义较小的缓冲池;在这种情况下,不需要使数据保存在缓冲池中的时间超出单个查询的运行时间。

表空间可以由一个或多个容器组成。容器可以是目录名、设备名或文件名。单个表空间可以有多个容器。可以在同一个物理存储设备上创建多个容器(来自一个或多个表空间),尽管您创建的各个容器使用不同存储设备时的性能最佳。如果您使用自动存储器表空间,那么容器的创建和管理工作由数据库管理器自动处理。如果未使用自动存储器表空间,那么必须自己定义和管理容器。

图 1 举例说明了一个数据库内的表和表空间与该数据库相关的容器之间的关系。

图 1. 数据库中的表空间和表
数据库表、表空间和数据库容器三者之间的关系。

EMPLOYEE 和 DEPARTMENT 表在 HUMANRES 表空间中,该表空间横跨容器 0、1、2 和 3。PROJECT 表位于容器 4 中的 SCHED 表空间内。此示例显示每个容器存在于单独的磁盘中。

数据库管理器会尝试平衡分布在所有容器中的数据负荷。因此,所有容器都将用于 存储数据。数据库管理器在使用另一个容器之前 写入一个容器的页数称为扩展数据块大小。数据库管理器并非始终从第一个容器开始存储表数据。

图 2 显示具有两个 4KB 页扩展数据块大小的 HUMANRES 表空间,它有四个容器,每个容器有少量已分配的扩展数据块。DEPARTMENT 和 EMPLOYEE 表都有 7 页,且跨所有四个容器。

图 2. 表空间中的容器和扩展数据块
此图显示了 HUMANRES 表空间。