posts - 38, comments - 13, trackbacks - 0, articles - 0
  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

表空间实践操作

Posted on 2009-09-03 10:00 大源 阅读(354) 评论(0)  编辑 收藏 引用 所属分类: DB2数据库
我觉得比熟悉各种表空间各种命令行的使用还要重要的是,理解表空间是什么?表空间它存在的意义?表空间在DB2数据库中处于什么功能点,因为任何都是系统的,它的每一个部分都是支撑系统耐以生存的重要因素

表空间是数据库及存储在该数据库中的表之间的逻辑层。表空间在数据库中创建,表在表空间中创建。

使用表空间的一个明显的好处是能够把数据合理的分布在不同的磁盘上或者存储在磁盘的不同位置上,有助于提高数据存取的效率。

DB2 的表空间按管理方式分为两种:系统管理空间(System Management Space,SMS)和数据库管理空间(Database Management Space,DMS)。

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

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

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

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

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

SMS每个容器是操作系统的文件空间中的一个目录;DMS每个容器是一个固定的、预分配的文件,或是物理设备

SMS的管理比较简单,由操作系统自动管理,空间的大小随数据量的变化系统自动调整。

DMS是由数据库管理的,空间大小在创建时确定,空间不够时要手工添加或删除部分数据以释放空间。

大多数情况下,DMS的性能比SMS好。

注意:在Linux系统中,由于每个用户代表一个实例,因此很多时候创建表空间的时候都会出现错误,原因是
你没有读写文件的权限,因此对根目录执行以下语句:

1chmod 777 /prod



1、创建用户表空间

一、创建SMS表空间

1db2 "CREATE REGULAR TABLESPACE SMSTB1 MANAGED BY SYSTEM USING('/prod/sms/ts1001','/prod/sms/ts1002')"

描述:这里的表空间SMSTB1是由两个容器(ts1001、ts1002)组成。

二、创建DMS表空间

1db2 "CREATE REGULAR TABLESPACE DMSTB1 MANAGED BY DATABASE USING(FILE '/prod/dms/ts2001' 1000FILE '/prod/dms/ts2002' 1000)"

描述:这里的表空间DMSTB1是由两个容器(1000页的ts2001、1000页的ts2002)组成

三、创建自动存储器表空间

由于这里没有指明具体容器的路径,因此,我假设是否在当前目录下创建表空间?

1db2 "CREATE REGULAR TABLESPACE AUTODMS1 MANAGED BY AUTOMATIC STORAGE"

我们看看结果:   我所指定的路径下发现没有相关表空间的文件,因此,我们想知道如何查找表空间所包含的容器的位置,这里有个很重要的概念就是Tablespace ID,这是唯一标识表空间的标识符。

 1db2 list tablespace containers for 6
 2
 3结果为-----------------------------------------
 4
 5            Tablespace Containers for Tablespace 6
 6
 7 Container ID                         = 0
 8 Name                                 = /home/db2inst1/db2inst1/NODE0000/TESTDB/T0000006/C0000000.USR
 9 Type                                 = File
10

那我怎么知道表空间所对应的ID是什么呢?执行以下语句
 1db2 list tablespaces show detail
 2
 3结果为:---------------------------------------
 4
 5 Tablespace ID                        = 6
 6 Name                                 = AUTODMS1
 7 Type                                 = Database managed space
 8 Contents                             = All permanent data. Regular table space.
 9 State                                = 0x0000
10   Detailed explanation:
11     Normal
12 Total pages                          = 8192
13 Useable pages                        = 8160
14 Used pages                           = 96
15 Free pages                           = 8064
16 High water mark (pages)              = 96
17 Page size (bytes)                    = 4096
18 Extent size (pages)                  = 32
19 Prefetch size (pages)                = 32
20 Number of containers                 = 1
21
描述:AUTODMS1表空间所对应的Tablespace ID,通过上述语句执行结果之后,得到其ID为6


2、创建临时表空间


一、创建系统临时表空间

系统临时表空间用来存储分组、排序、连接、重组、创建索引操作等中间结果。
只有注册用户登录后才能发表评论。