DB2 的表空间按管理方式分为两种:系统管理空间(System Management
Space,SMS)和数据库管理空间(Database Management Space,DMS)。
按类型分为:规则表空间、长整数表空间、系统临时表空间、用户临时表空间
。其中长整数表空间只能是DMS的。
规则表空间中包含用户数据的表。默认用户表空间名为USERSPACE1,索引也存
储在规则表空间中,另外系统目录表也放在规则表空间中。
默认的系统目录表空间名为SYSCATSPACE。
临时表空间分为系统临时表空间和用户临时表空间。系统临时表空间用来存储
各种数据操作(排序、重组表、创建索引、连接表)中所需的内部临时数据,虽
然可以创建任意多个系统临时表空间,但建议用户只使用大多数表所使用的页大
小创建一个,默认系统临时表空间名为TEMPSPACE1。用户临时表空间用来存储已
说明全局临时表(已说明全局临时表存储的是应用程序临时数据)。用户临时表
空间不是在数据库创建时默认创建的。
SMS每个容器是操作系统的文件空间中的一个目录;DMS每个容器是一个固定的
、预分配的文件,或是物理设备。
SMS的管理比较简单,由操作系统自动管理,空间的大小随数据量的变化系统
自动调整。
DMS是由数据库管理的,空间大小在创建时确定,空间不够时要手工添加或删
除部分数据以释放空间。
大多数情况下,DMS的性能比SMS好。
用命令行方式创建SMS表空间的简单语法:
CREATE TABLESPACE <NAME>; MANAGED BY SYSTEM USING ('<path>;')
用命令行方式创建DMS表空间的简单语法:
CREATE TABLESPACE <NAME>; MANAGED BY DATABASE USING (FILE '<path>;'
<size>;)
例一:在OS/2或Windows NT上创建一个SMS表空间:
CREATE TABLESPACE RESOURCE MANAGED BY SYSTEM
USING ('d:\acc_tbsp','e:\acc_tbsp','f:\acc_tbsp')
例二:在OS/2上创建一个DMS表空间,使用各自有5000页的两个文件容器:
CREATE TABLESPACE RESOURCE MANAGED BY DATABASE
USING (FILE 'd:\db2data\acc_tbsp' 5000,
FILE 'e:\db2data\acc_tbsp' 5000)
例三:在UNIX上创建一个DMS表空间,使用各有10000页的3个逻辑卷:
CREATE TABLESPACE RESOURCE MANAGED BY DATABASE
USING (DEVICE '/dev/rdblv6' 10000,
DEVICE '/dev/rdblv7' 10000,
DEVICE '/dev/rdblv8' 10000)
OVERHEAD 24.1
TRANSFERRATE 0.9
上面语句中提到的UNIX设备必须已经存在,且实例拥有者和SYSADM组必须能够写
入它们。
例四:在UNIX分区数据库中称为ODDNODEGROUP的节点组上创建一个DMS表空间:
CREATE TABLESPACE PLANS MANAGED BY DATABASE
USING (DEVICE '/dev/HDISK0' 10000, DEVICE '/dev/n1hd01' 40000) ON
NODE 1
(DEVICE '/dev/HDISK0' 10000, DEVICE '/dev/n3hd03' 40000) ON
NODE 3
(DEVICE '/dev/HDISK0' 10000, DEVICE '/dev/n5hd05' 40000) ON
NODE 5
在此例中,ODDNODEGROUP节点组由编号为1、3、5的数据库分区组成,在所有数据
库分区上,都使用具有10000个4KB页的 /dev/hdisk0 设备,另外,还为每个数据
库分区说明了一个包含40000个4KB大小的页的设备。
例五:在UNIX系统上,创建一个具有8KB页大小的SMS表空间:
CREATE TABLESPACE SMS8K PAGESIZE 8192
MANAGED BY SYSTEM
USING ('FSMS_8K_1')
BUFFERPOOL BUFFPOOL8K
相关的缓冲池也必须具有相同的8KB页大小。另外,创建的表空间只有在所引用的
缓冲池被激活后才能使用。
例六:创建系统临时表空间:
系统临时表只能存储在系统临时表空间中,所以数据库必须始终至少有一个系
统临时表空间。
CREATE SYSTEM TEMPORARY TABLESPACE tmp_tbsp
MANAGED BY SYSTEM
USING ('d:\tmp_tbsp','e:\tmp_tbsp')
创建系统临时表空间时,只能指定IBMTEMPGROUP节点组。
例七:创建用户临时表空间:
用户临时表空间用来存储已说明的临时表。
CREATE USER TEMPORARY TABLESPACE usr_tbsp
MANAGED BY DATABASE
USING (FILE 'd:\db2data\user_tbsp' 5000,
FILE 'e:\db2data\user_tbsp' 5000)
与常规表空间一样,用户临时表空间可以在除IBMTEMPGROUP之外的任何节点组中
创建。创建用户临时表空间使用的默认节点组是IBMDEFAULTGROUP。DECLARE
GLOBAL TEMPORARY TABLE 语句定义提供在用户临时表空间中使用的已说明临时表
。
例八:将两个新设备容器添加到UNIX上的一个表空间中:
ALTER TABLESPACE RESOURCE
ADD (DEVICE '/dev/rhd9' 10000,
DEVICE '/dev/rhd10' 10000)
例九:把UNIX上的表空间中的两个设备容器改变大小(由1000页改为2000页)
ALTER TABLESPACE HISTORY
RESIZE (DEVICE '/dev/rhd7' 2000,
DEVICE '/dev/rhd8' 2000)
例十:在UNIX表空间中,扩充两个设备容器(原本各含1000页)
ALTER TABLESPACE HISTORY
EXTEND (DEVICE '/dev/rhd11' 1000,
DEVICE '/dev/rhd12' 1000)
操作后两个设备的大小都从1000页扩充至2000页。不能缩小容器的大小。
可以给现存表空间重命名,而无须关心该表空间中的个别对象。重命名表空间时
,将更改所有引用该表空间的目录记录。不能重命名SYSCATSPACE表空间;不能重
命名处于前滚暂挂或正在前滚状态的表空间。
删除表空间时,也会删除该表空间中的所有数据,释放容器,去除目录项,并导
致该表空间中定义的所有对象都被删除或标记为无效。可以通过删除表空间来重
新使用该表空间中的容器,但是在试图重新使用这些容器之前,必须COMMIT该
DROP TABLESPACE命令。
分享到:
相关推荐
db2表空间不足及处理
检查db2表空间是否不足已经处理的方法,具体怎么查看表空间是否已经被占满已经具体的解决方法在文档中都有说明。。
DB2表空间管理方式分为两种:系统管理空间(System Management Space,SMS)和数据库管理空间(Database Management Space,DMS)
DB2表空间详解
IBM DB2 表空间与缓冲池IBM DB2 表空间与缓冲池IBM DB2 表空间与缓冲池IBM DB2 表空间与缓冲池IBM DB2 表空间与缓冲池
DB2表空间检查与调优 附录1-DB2表空间状态列表
DB2表空间管理及查看脚本,用于对表空间中的分表规则明确的表进行删除!以保证有足够的表空间预留!
记录db2 裸设备扩容归档 (文件系统)和表空间(裸设备)的过程。aix上操作截图
DB2表和表空间状态详解 摘自IBM官网 状态说明很全
对于DB2数据库管理(DMS)表空间的高水位标记(HWM)是指该表空间曾经使用到的最大数据页数。如果使用:db2 list tablespaces show detail,看到某个DMS表空间的已用页数低于高水位标记,则有可能通过如下方法降低高...
在重置DB2表空间静默状态时,经常会遇到一些问题,下面教您重置DB2表空间静默状态的正确方法,希望可以解决您遇到的问题。 正确的重置DB2表空间静默状态的方法: 导致上述问题的原因是由于进行重置操作的...
DB2的表空间 DB2的表空间 DB2的表空间 DB2的表空间
DB2的表空间和缓冲池
这是某银行 DB2 系统发生的一次真实案例,SQL 语句执行时间变长,最后发现“罪魁祸首”竟是 DB2 系统临时表空间过大。本文将介绍这个性能问题的分析处理过程,如何逐步定位问题根本原因,并提供了解决方法。这其中...
DB2基础----表空间
DB2不允许访问表空间
我自学db2的笔记,涉及日常的使用命令和db2表空间设定。
DB2存储过程表空间sql专题整理学习
DB2数据库环境 32k分页表空间是建表,将有些数据库表建立在独立的表空间上面有助于提高数据库引擎的执行效率