DB2表空间是一种存储结构,包含表,索引,大对象和长数据。 它可用于将数据库中的数据组织到逻辑存储组中,该逻辑存储组与存储在系统上的数据相关。
表空间存储在数据库分区组中。
表空间提供了以下几个优势:
表空间由一个或多个容器(container )组成。容器可以是目录名称,设备名称或文件名。
在数据库中,单个表空间可以在同一物理存储设备上具有多个容器。 如果使用自动存储表空间选项创建表空间,则数据库管理器将自动处理容器的创建和管理。 如果未使用自动存储表空间选项创建,则需要自己定义和管理容器。
创建新数据库时,数据库管理器会为数据库创建一些默认表空间。 这些表空间用作用户和临时数据的存储。 每个数据库必须包含至少三个表空间,如下所示:
SYSCATSPACE
,无法删除。USERSPACE1
。 如果在创建表时没有为表指定用户定义的表空间,则数据库管理器会选择默认的用户表空间。系统临时表空间保存数据库管理器在执行排序或连接等操作时所需的临时数据。 数据库必须至少具有一个系统临时表空间,并将其命名称为TEMPSPACE1
。 它是在创建数据库时创建的。 用户临时表空间保存表中的临时数据。 它是使用DECLARE GLOBAL TEMPORARY TABLE
或CREATE GLOBAL TEMPORARY TABLE
语句创建的。 在创建数据库时,默认情况下不会创建此临时表空间。
表空间和存储管理:
可以使用不同的方式设置表空间,具体取决于用户希望如何使用它们。 可以设置操作系统来管理表空间分配,可以让数据库管理器分配空间,也可以为数据选择自动分配表空间。
可以使用以下三种类型的托管空间:
系统管理空间(SMS):操作系统的文件系统管理器分配和管理存储表的空间。 存储空间按需分配。 该模型由表示数据库对象的文件组成。 对于用户定义的表空间,在DB2 V10.1
中不推荐使用此表空间类型,并且不会为目录和临时表空间不推荐使用此表空间类型。
数据库管理空间(DMS) :数据库服务器控制存储空间。 根据在创建DMS表空间时指定的容器定义,在文件系统上预先分配存储空间。 对于用户定义的表空间,不推荐使用版本10.1修订包1,但系统表空间和临时表空间不推荐使用它。
自动存储表空间: 可以自动管理数据库服务器。 数据库服务器根据数据库上的数据创建和扩展容器。 使用自动存储管理,不需要提供容器定义。 数据库服务器负责创建和扩展容器以利用分配给数据库的存储。 如果向存储组添加存储空间,则在现有容器达到其最大容量时会自动创建新容器。 如果要立即使用新添加的存储,可以重新平衡表空间。
页面,表和表空间大小:
临时DMS和自动存储表空间,用户用数据库选择的页面大小决定了表空间大小的最大限制。 对于表SMS和临时自动存储表空间,页面大小限制了表本身的大小。 页面大小可以是:4kb
,8kb
,16kb
或32kb
。