db2表空间经验整理

来源:互联网 发布:雨花网络问政php 编辑:程序博客网 时间:2024/05/19 17:52

问题15db2表空间概述

DB2 的表空间按管理方式分为两种:系统管理空间(System Management 

Space
SMS)和数据库管理空间(Database Management SpaceDMS)。

   
   
按类型分为:规则表空间、长整数表空间、系统临时表空间、用户临时表空间


。其中长整数表空间只能是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/2Windows 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节点组由编号为135的数据库分区组成,在所有数据


库分区上,都使用具有100004KB页的 /dev/hdisk0 设备,另外,还为每个数据


库分区说明了一个包含400004KB大小的页的设备。


例五:在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
命令。

问题20SMSDMS的对比

        特性                                SMS        DMS
能够在表空间中动态增加容器的数目吗                N        Y
能够把索引数据存放到不同表空间的表中吗                N        Y
能够把大对象数据存放到不同表空间的表中吗        N        Y
表可以分散存放到多个表空间中吗                        N        Y
仅在需要时才分配空间吗                        Y        N
表空间可以被放在不同的磁盘中吗                        Y        N
创建之后,区段大小能够改变吗                        N        N

问题1、表空间、临时表空间页面大小的问题

解决方案:新建一个缓冲区、删除表空间、新建空间、新建临时表空间

CREATE BUFFERPOOL pf16_2
  IMMEDIATE
  ALL
DBPARTITIONNUMS
  SIZE
100000
 
NUMBLOCKPAGES 0
  PAGESIZE
16 K;

 

Drop tablesapce EDWADM

 

CREATE LARGE TABLESPACE EDWADM
  IN DATABASE PARTITION GROUP
IBMDEFAULTGROUP
  PAGESIZE
16K
  MANAGED BY DATABASE
  USING
  
(Device '/dev/redwadm' 900000
  
)
  EXTENTSIZE
32
  PREFETCHSIZE
32
  BUFFERPOOL
BP16
  OVERHEAD
24.10
  TRANSFERRATE
0.90
  DROPPED TABLE RECOVERY OFF
;

 

CREATE TEMPORARY TABLESPACE MYSYSTEMP1
  IN DATABASE PARTITION GROUP
IBMTEMPGROUP
  PAGESIZE
16K
  MANAGED BY SYSTEM
  USING
  
('/dw/edwdata/mysystemp'
  
)
  EXTENTSIZE
32
  PREFETCHSIZE
32
  BUFFERPOOL
BP16
  OVERHEAD
24.10
  TRANSFERRATE
0.90
  DROPPED TABLE RECOVERY OFF
;

 

问题3、重建用户默认表空间的问题

Drop TABLESPACE USERSPACE1;

 

CREATE TABLESPACE USERSPACE1
  IN DATABASE PARTITION GROUP
IBMDEFAULTGROUP
  PAGESIZE
16K
  MANAGED BY SYSTEM
  USING
  
('/dw/edwdata/userspace1'
  
)
  EXTENTSIZE
32
  PREFETCHSIZE
32
  BUFFERPOOL
BP16
  OVERHEAD
24.10
  TRANSFERRATE
0.90
  DROPPED TABLE RECOVERY OFF
;

问题4、表空间维护常用操作

--更改表空间大小

ALTER TABLESPACE edwadm RESIZE (device '/dev/redwadm' 900000);

ALTER TABLESPACE TS1 RESIZE (FILE '/conts/cont0' 2000, DEVICE '/dev/rcont1' 2000, FILE 'cont2' 2000);

ALTER TABLESPACE TS1 RESIZE (ALL 2000)

db2 " ALTER TABLESPACE PAYROLL ADD (DEVICE '/dev/rhdisk9' 10000) "

---重命名表空间

RENAME TABLESPACE RESOURCE TO RES1

 

原创粉丝点击