1. 表,视图,索引的驻留在表空间里边。
一个数据库可以有多个表空间。在首次创建数据库时db2 会默认创建一组表空间

2. SYSCATSPACE 系统编目表空间,用来存储关于数据库的元信息。不能删
TEMPSPACE1 临时表空间,不能删
USERSPACE1 用户表空间

按类型分为:规则表空间、大对象表空间、系统临时表空间、用户临时表空间

规则表空间中包含用户数据的表。默认用户表空间名为USERSPACE1,索引也存储在规则表空间中,另外系统目录表也放在规则表空间中。默认的系统目录表空间名为SYSCATSPACE。

临时表空间分为系统临时表空间和用户临时表空间。

系统临时表空间用来存储各种数据操作(排序、重组表、创建索引、连接表)中所需的内部临时数据,虽然可以创建任意多个系统临时表空间,但建议用户只使用大多数表所使用的页大小创建一个,默认系统临时表空间名为TEMPSPACE1。

用户临时表空间用来存储已说明全局临时表(已说明全局临时表存储的是应用程序临时数据)。用户临时表空间不是在数据库创建时默认创建的


3. SMS DMS

sms : System Managed space
空间需要的初始设置比较少,管理方面需要考虑的因素少,而且一般更容易创建
和使用,因为空间会在需要时自动地分配。
dms : Database Managed Space
表空间需要在创建时预先分配空间,所以需要进行比较多的初始设置工作,管理
方面也有更多需要考虑的因素。但是,它为用户提供了更大的灵活性,可以更好地
控制数据的布局并改进数据访问的性能。比sms好。
sms : os关联

SYSCATSPACE USERSPACE1 --- dms 

 TEMPSPACE1 ---sms



4. bufferpool

是一个内存块的集合,这些内存块采用页面的形式,首次创建时会默认创建一个
IBMDEFAULTBP Buffer Pools

db2支持不同的页面大小,2K,4K,8K,16K ,32K,IBMDEFAULTBP 中使用4K的页
面大小,如果希望创建采用其他页面大小的表空间,那么首先要确保数据库中有采用这
种页面大小的缓冲池。多个表空间可以使用同一个缓冲池。在创建或更改表空间时,可
以指定要使用哪个缓冲池。选择和创建适当的缓冲池对于数据库性能很重要。可以根据
需要创建新的缓冲池或更改现有的缓冲池


1.在Windows上创建一个SMS表空间

CREATE TABLESPACE RESOURCE MANAGED BY SYSTEM USING ('d:\acc_tbsp','e:\acc_tbsp','f:\acc_tbsp')



2.在Windows上创建一个DMS表空间,使用各自有5000页的两个文件容器

CREATE TABLESPACE RESOURCE MANAGED BY DATABASE USING (FILE 'd:\db2data\acc_tbsp' 5000, FILE 'e:\db2data\acc_tbsp' 5000)



3.在例三所创建的表空间中添加一个容器

ALTER TABLESPACE RESOURCE ADD(FILE 'f:\db2data\acc_tbsp' 5000)



4.用RESIZE子句更改例三所创建的表空间的容器的大小

ALTER TABLESPACE RESOURCE RESIZE (file 'd:\db2data\acc_tbsp' 8000, file 'e:\db2data\acc_tbsp' 8000, file 'f:\db2data\acc_tbsp' 8000)



每个容器(文件)的大小变为8000页。把容器的容量变大不会出错,但是如果容器中的数据已经充满,再把容器的容量缩小,则会引起错误。

5.用EXTEND子句更改例三所创建的表空间的容器的大小

ALTER TABLESPACE RESOURCE EXTEND (file 'd:\db2data\acc_tbsp' 1000, file 'e:\db2data\acc_tbsp' 1000, file 'f:\db2data\acc_tbsp' 1000)



该命令的运行结果为在原有容量的基础之上,每个容器再增加1000页。

CREATE TABLESPACE "USERTBS3" 

 IN DATABASE PARTITION GROUP "IBMDEFAULTGROUP" 

 PAGESIZE 8K 

 MANAGED BY SYSTEM 

 USING 

 ('G:\db2\USERSP3\USERTBS0' 

 ) 

 ON DBPARTITIONNUM (0) 

 USING 

 ('G:\db2\USERSP3\USERTBS1' 

 ) 

 ON DBPARTITIONNUM (1) 

 USING 

 ('G:\db2\USERSP3\USERTBS2' 

 ) 

 ON DBPARTITIONNUM (2) 

 USING 

 ('G:\db2\USERSP3\USERTBS3' 

 ) 

 ON DBPARTITIONNUM (3) 

 EXTENTSIZE 16 

 PREFETCHSIZE 16 

 BUFFERPOOL "bp8" 

 OVERHEAD 10.50 

 TRANSFERRATE 0.14 

 DROPPED TABLE RECOVERY OFF; 



CREATE BUFFERPOOL "bp8" 

 IMMEDIATE 

 DATABASE PARTITION GROUP 

 "IBMDEFAULTGROUP", 

 "IBMTEMPGROUP", 

 "SINGLE_PG", 

 "IBMCATGROUP" 

 SIZE 10000 

 NUMBLOCKPAGES 0 

 PAGESIZE 8 K; 



CREATE TABLE "CCP"."BIL_ACCT_INFO_290_200901" 

 ("PRD_INST_ID" DECIMAL(20, 0), 

 "INLOCAL_FEE_OLD" DECIMAL(16, 2), 

 "TRALD_FEE_OLD" DECIMAL(16, 2), 

 "BELOCAL_FEE_OLD" DECIMAL(16, 2), 

 "IP_FEE_OLD" DECIMAL(16, 2), 

 "MONTHLY_CHARGE_OLD"DECIMAL(16, 2), 

 "SMS_FEE_OLD" DECIMAL(16, 2), 

 "VAS_FEE_OLD" DECIMAL(16, 2), 

 "FEE_OLD_11808" DECIMAL(16, 2), 

 "INLOCAL_FEE" DECIMAL(16, 2), 

 "TRALD_FEE" DECIMAL(16, 2), 

 "BELOCAL_FEE" DECIMAL(16, 2), 

 "IP_FEE" DECIMAL(16, 2), 

 "MONTHLY_CHARGE" DECIMAL(16, 2), 

 "SMS_FEE" DECIMAL(16, 2), 

 "VAS_FEE" DECIMAL(16, 2), 

 "FEE_11808" DECIMAL(16, 2), 

 "COUNT_INLOCAL" INTEGER, 

 "DUR_INLOCAL" DECIMAL(20, 0), 

 "COUNT_NET" INTEGER, 

 "DUR_NET" DECIMAL(20, 0), 

 "COUNT_TRALD" INTEGER, 

 "DUR_TRALD" DECIMAL(20, 0), 

 "COUNT_IP" INTEGER, 

 "DUR_IP" DECIMAL(20, 0), 

 "COUNT_VAS" INTEGER, 

 "DUR_VAS" DECIMAL(20, 0), 

 "COUNT_11808" INTEGER, 

 "DUR_11808" DECIMAL(20, 0), 

 "FEE_OLD" DECIMAL(16, 2), 

 "FEE" DECIMAL(16, 2), 

 "ACC_NBR" VARCHAR(16) 

 ) 

 DATA CAPTURE NONE 

 IN "USERTBS2" 

 PARTITIONING KEY 

 (PRD_INST_ID 

 ) USING HASHING 

 NOT LOGGED INITIALLY;