象ORACLE一样,也有 表空间,但又多了一个容器的概念,
表空间作为数据库与包含实际表数据的容器对象之间的一层 。
而 容器是一个物理存储设备。它可以由目录名、设备名或文件名标识。容器被分配给表空间。
表空间可以跨许多容器,这意味着可以突破操作系统对于一个容器可以包含的数据量的限制。
DB2 支持三种表空间:
* 系统管理的空间(System-Managed Space,SMS):由操作系统的文件系统管理器分配和管理空间。
在DB2 9 之前,如果不带任何参数创建数据库或表空间,就会导致所有表空间作为 SMS 对象创建。
*数据库管理的空间(Database-Managed Space,DMS):由数据库管理程序控制存储空间。
这种表空间本质上是一种特殊用途的文件系统实现,可以最好地满足数据库管理程序的需要。
*DMS 的自动存储(Automatic Storage With DMS):自动存储实际上不是一种单独的表空间类型,
而是一种处理 DMS 存储的不同方式。DMS 容器需要比较多的维护,在 DB2 V8.2.2 中引入了自动存储,作为简化空间管理的方式。
特性 | SMS | DMS | 自动存储 |
是否分段(Striping)? | 是 | 是 | 是 |
默认类型 | Version 8 | 无 | Version 9 |
对象管理 | 操作系统 | DB2 | DB2 |
空间分配 | 按需增长/收缩 | 预先分配;大小可以收缩和增长,但是需要 DBA 干预。 | 预先分配;可以自动增长。 |
管理的简便性 | 最好;很少需要调优,甚至不需要 | 好,但是需要一些调优(例如, EXTENTSIZE PREFETCHSIZE ) | 最好;很少需要调优,甚至不需要 |
性能 | 非常好 | 最好;可通过利用原始容器多获得 5% 到 10% 的收益 | 最好;但是,可以不使用原始容器 |
表空间最大大小 | 64GB(4K 页面) | 2TB(4K 页面) | 2TB(4K 页面) |
DB2 9 自动使用自动存储,并且不可转换。
特性 | 非自动存储 | 自动存储 |
容器的创建 | 必须在创建表空间时显式地提供容器。 | 不能在创建表空间时提供容器;它们将由 DB2 自动地分配。 |
容器大小的调整 | 在默认情况下,表空间大小的自动调整是关闭的(AUTORESIZE NO)。 | 在默认情况下,表空间大小的自动调整是打开的(AUTORESIZE YES)。 |
初始大小 | 不能使用 INITIALSIZE 子句指定表空间的初始大小。 | 使用 INITIALSIZE 子句指定表空间的初始大小。 |
容器的修改 | 可以使用 ALTER TABLESPACE 语句(ADD、DROP、BEGIN NEW STRIPE SET 等等)执行容器操作。 | 不能执行容器操作,因为由 DB2 控制空间管理。 |
管理的简便性 | 可以使用重定向的恢复操作重新定义与表空间相关联的容器。 | 不能使用重定向的恢复操作重新定义与表空间相关联的容器,因为由 DB2 控制空间管理。 |