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;