DB2 表空间
本章详细介绍了表空间。
简介
表空间是一种存储结构,它包含表、索引、大对象和长数据。 它可用于将数据库中的数据组织到与数据在系统中存储位置相关的逻辑存储组中。 此表空间存储在数据库分区组中。
数据库中表空间的好处
表空间以各种方式在数据库中有益,如下所示:
- 可恢复性:表空间使备份和恢复操作更加方便。 使用单个命令,我们可以备份或恢复表空间中的所有数据库对象。
- 自动存储管理:数据库管理器根据需要创建和扩展容器。
- 内存利用率:单个缓冲池可以管理多个表空间。 我们可以将临时表空间分配给它们自己的缓冲池,以提高排序或连接等活动的性能。
容器
表空间包含一个或多个容器。 容器可以是目录名、设备名或文件名。 在数据库中,一个表空间可以在同一个物理存储设备上有多个容器。 如果表空间是使用自动存储表空间选项创建的,则容器的创建和管理由数据库管理器自动处理。 如果不是使用自动存储表空间选项创建的,我们需要自己定义和管理容器。
默认表空间
创建新数据库时,数据库管理器会为数据库创建一些默认表空间。 这些表空间用作用户和临时数据的存储。 每个数据库必须包含至少三个表空间,如下所示:
- 目录表空间
- 用户表空间
- 临时表空间
目录表空间:它包含数据库的系统目录表。 它被命名为 SYSCATSPACE
并且不能被删除。
用户表空间:该表空间包含用户定义的表。 在一个数据库中,我们有一个默认的用户表空间,命名为 USERSPACE1。 如果您在创建表时没有为表指定用户定义的表空间,那么数据库管理器会为您选择默认的用户表空间。
临时表空间:临时表空间包含临时表数据。 该表空间包含系统临时表空间或用户临时表空间。
系统临时表空间保存数据库管理器在执行排序或连接等操作时所需的临时数据。 一个数据库必须至少有一个系统临时表空间,它被命名为 TEMPSPACE1
。 它是在创建数据库时创建的。 用户临时表空间保存表中的临时数据。 它是用 DECLARE GLOBAL TEMPORARY TABLE
或 CREATE GLOBAL TEMPORARY TABLE
语句创建的。 这个临时表空间不是在创建数据库时默认创建的。
表空间和存储管理:表空间可以以不同的方式设置,具体取决于我们希望如何使用它们。 我们可以设置操作系统来管理表空间分配,我们可以让数据库管理器分配空间,或者您可以选择为我们的数据自动分配表空间。
以下三种类型的托管空间可用:
系统管理空间 (SMS) :操作系统的文件系统管理器分配和管理存储表的空间。 存储空间按需分配。 该模型由表示数据库对象的文件组成。 对于用户定义的表空间,此表空间类型在 10.1 版中已弃用,对于目录和临时表空间也不会弃用。
数据库管理空间 (DMS) :数据库服务器控制存储空间。 存储空间是根据您在创建 DMS 表空间时指定的容器定义在文件系统上预先分配的。 对于用户定义的表空间,它从 10.1 版修复包 1 开始被弃用,但对于系统表空间和临时表空间不被弃用。
自动存储表空间 :数据库服务器可以自动管理。 数据库服务器创建和扩展容器依赖于数据库中的数据。 使用自动存储管理,不需要提供容器定义。 数据库服务器负责创建和扩展容器以利用分配给数据库的存储。 如果将存储空间添加到存储组,当现有容器达到其最大容量时,将自动创建新容器。 如果想立即使用新添加的存储,可以重新平衡表空间。
页、表和表空间大小 :临时 DMS 和自动存储表空间,您为数据库选择的页面大小决定了表空间大小的最大限制。 对于表 SMS 和临时自动存储表空间,页面大小限制了表本身的大小。 页面大小可以是 4kb、8kb、16kb 或 32kb。
表空间类型 | 4K 页面大小限制 | 8K 页面大小限制 | 16K 页面大小限制 | 32K 页面大小限制 |
---|---|---|---|---|
DMS, 非临时自动存储表空间常规 | 64G | 128G | 256G | 512G |
DMS, 临时DMS和非临时自动存储表空间大 | 1892G | 16384G | 32768G | 65536G |