五、DB2数据库TABLESPACE(表空间)的创建及删除

什么是表空间

表空间是数据库系统中数据库逻辑结构与操作系统物理结构之间建立映射的重要存储结构,用于指明数据库中数据的物理位置。任何数据库的创建都必须为其指定表空间,且数据库中的所有数据都位于表空间中。

表空间可以由一个或多个容器组成。容器可以是目录名、设备名或文件名。单个表空间可以有多个容器。

表空间分类

一个数据库包含三类表空间:

  • 目录表空间
  • 一个或多个用户表空间
  • 一个或多个临时表空间

目录表空间

目录表空间包含数据库的所有系统目录表。此表空间称为SYSCATSPACE,它不能被删除。

用户表空间

用户表空间包含用户自定义的表。缺省情况下,将创建一个用户表空间 USERSPACE1。

如果创建表时未对其指定表空间,那么数据库管理器将自动进行选择。

表空间的页大小确定了表中的最大行长度或列数。如果列数或行大小超过表空间页大小的限制,则会返回错误(SQLSTATE 42997)。

临时表空间

临时表空间包含临时表。

临时表空间可以是系统临时表空间或用户临时表空间。

系统临时表空间存放数据库管理器在执行诸如排序或连接之类的操作时所需的临时数据。这些类型的操作需要额外的空间来处理结果集。数据库必须有至少一个系统临时表空间;在缺省情况下,创建数据库时会创建一个名为 TEMPSPACE1 的系统临时表空间。

用户临时表空间存放使用DECLARE GLOBAL TEMPORARY TABLE 或 CREATE GLOBAL TEMPORARY TABLE语句创建的表的临时数据。缺省情况下,创建数据库时不会创建这些表空间。为了能够定义已声明临时表或已创建临时表,至少创建一个用户临时表空间。

创建REGULAR表空间

REGULAR表空间,用来永久保存表中的数据。表中的数据,是放在永久表空间中的,如果一个数据库下没有创建永久表空间,则无法创建表。

语法:

db2 "create regular tablespace 表空间名 pagesize 页大小 managed by database using(容器类型、路径及大小) bufferpool 使用的缓冲池名"

如下示例:

db2 "create regular tablespace tbs_test pagesize 32k managed by database using(file '/home/db2inst1/tablespaces/tbs_test' 500m) bufferpool bp32k"

创建USER TEMPORARY表空间

USER TEMPORARY表空间用来存储临时表中的数据。SESSION断开后,临时表消失,则该临时表占用的USER TEMPORARY表空间也会自动清除。

语法:

db2 "create user temporary tablespace 表空间名 managed by database using (容器类型、路径及大小)"

如下示例:

db2 "create user temporary tablespace tbs_tmp_test managed by database using (file '/home/db2inst1/tablespace/tbs_tmp_test' 200M)"

删除表空间

已经创建的表空间,可以使用drop命令删除。

语法:

db2 "drop tablespace 表空间名"

如下示例:

db2 "drop tablespace tbs_tmp_test"
【版权说明:仅允许非商业转载且请注明出处:Mac私塾 网址:http://macsishu.com】

发表评论

邮箱地址不会被公开。