分区兼容性
可对分区键的对应列的基本数据类型进行比较,并可将它们声明为是分区兼容的(partition compatible)。分区兼容的数据类型具有如下属性:具有相同值但有不同类型的两个变量会按相同的分区算法映射至同一个分区号。
分区兼容性具有下列特征:- 基本数据类型与另一个相同的基本数据类型兼容。
- 内部格式用于 DATE、TIME 和 TIMESTAMP 数据类型。它们彼此都不兼容,且都不与 CHAR 兼容。
- 分区兼容性不受带有 NOT NULL 或 FOR BIT DATA 定义的列的影响。
- 对兼容数据类型的 NULL 值的处理是完全相同的;对不兼容数据类型的 NULL 值的处理可能不相同。
- 用户定义的类型的基本数据类型用于分析分区兼容性。
- 对分区键中相同值的小数的处理是完全相同的,即使它们的标度和精度不同。
- 字符串中(CHAR、VARCHAR GRAPHIC 或 VARGRAPHIC)的尾部空格会被散列算法忽略。
- BIGINT、SMALLINT 和 INTEGER 是兼容的数据类型。
- REAL 和 FLOAT 是兼容的数据类型。
- 不同长度的 CHAR 和 VARCHAR 是兼容的数据类型。
- GRAPHIC 和 VARGRAPHIC 是兼容的数据类型。
- 分区兼容性不适用于 LONG VARCHAR、LONG VARGRAPHIC、CLOB、DBCLOB 和 BLOB 数据类型,因为它们不能作为分区键。
并置
并置(collocation)是安置同一个数据库分区中包含相关数据的不同表中的行。并置的表使 DB2 可以更有效地使用连接策略。
您可能会发现,作为对特定查询的响应,两个或多个表频繁地提供数据。在此情况下,您会希望这样的表中的相关数据的位置尽可能地靠近。在数据库被物理地划分为两个或多个数据库分区的环境中,必须有一种方法可将划分的表的相关碎片尽可能地靠近。完成此过程的功能称为表并置。
当存取用于连接或子查询的多个表时,DB2(R) 通用数据库(DB2 UDB)能够识别要连接的数据是否位于相同数据库分区上。于是 DB2 就可以在存储数据的数据库分区上执行连接或子查询,而不必在数据库分区之间移动数据。这种局部地执行连接或子查询的能力具有显著的性能优点。
要发生并置,表必须:
- 在相同数据库分区组中,且这个数据库分区组不能处在再分配期间。(在再分配期间,数据库分区组中的表可能使用不同的分区映射 —— 它们不是并置的。)
- 有包含相同数量的列的分区键。
- 分区键的相应列是分区兼容的。
如果一个表在一个单分区数据库分区组中,且该分区组是在另一个表所在的同一个分区上定义的,那么也可以发生并置。
缓冲池
缓冲池是处理期间用于存放数据页和从中读取、修改数据页的一个内存区域。默认情况下,当创建一个缓冲池时,在每个分区上都会创建这样的缓冲池。为了容易管理,通常最好的做法是使每个分区上的缓冲池大小一致。但是,也可以改变特定分区上的缓冲池大小。例如,若要将分区 4 的 'BUF8K' 缓冲池改为 400MB,可以发出命令:
alter bufferpool BUF8K dbpartitionnum 4 size 51200
还可以通过指定一个数据库分区组来选择在哪几个分区上创建缓冲池,在此情况下,只有在数据库分区组中的那些分区上才会创建缓冲池。
表空间
表空间是存储数据库对象的容器集合的抽象。表空间在数据库与存储在数据库中的表之间提供了一个间接层。对于每个表空间,在存储设备上都有一个空间与之对应。一个表中的数据、索引、long 字段和 LOB 部分可以存储在相同的表空间中,也可以分别放到不同的表空间中,以提高性能。
数据库分区表达式
当定义一个横跨同一台机器上多个逻辑数据库分区的表空间的容器时,为了避免一个以上的逻辑分区具有相同的路径/设备名称,通常使用数据库分区表达式(Database Partition Expression)。通过使用数据库分区号作为容器名称的一部分,可以确保容器名称在各分区当中是惟一的。这可以作为手动地为每个分区指定位置的替代方法。
可以使用参数 " $N" ([blank]$N) 来表示一个数据库分区表达式,它可以用在容器名称的任何地方,而且可以指定多个数据库分区表达式。数据库分区表达式以一个空格字符结束;数据库分区表达式计算完毕后,空格后的内容附在容器名称的后面。 如果容器名称中在数据库分区表达式后面没有空格字符,则认为剩下的字符串是表达式的一部分。
参数的使用只能以如下一种格式出现(在这个例子中,假设分区号是 5):
表 5. 常见数据库分区表达式
| 语法 | 例子 | 值 |
|---|---|---|
| [blank]$N | " $N" | 5 |
| [blank]$N+[number] | " $N+1011" | 1016 |
| [blank]$N%[number] | " $N%3" (% 是模块) | 2 |
| [blank]$N+[number]%[number] | " $N+12%13" | 4 |
| [blank]$N%[number]+[number] | " $N%3+20" | 22 |
如果使用类似于上面的字符串,并且分区号仍然是 5,那么将看到:
表 6. 数据库分区表达式的使用
| 例子 | 容器名称 |
|---|---|
| '/dbdir/node $N /cont1' | '/dbdir/node5/cont1' |
| '/ $N+1000 /file1' | '/1005/file1' |
| ' $N%10 /container' | '5/container' |
| '/dir/ $N%5+2000 /dmscont' | '/dir/2000/dmscont' |
如果在一个由两个分区组成的数据库上发出以下语句:
CREATE TABLESPACE TBSP1 MANAGED BY DATABASE USING (device '/dev/container $N' 10000)
那么将看到下列容器被创建:
- /dev/container0 - on DATABASE PARTITION 0
- /dev/container1 - on DATABASE PARTITION 1
专题:http://www.qqread.com/linux/2006/12/e287184.html
相关专题
- 电脑配置手册 (8178篇文章)
- 服务器配置专栏 (10787篇文章)
- Linux集群技术 (8137篇文章)
- DB2 (420篇文章)
- 体验Linux的音影世界 (7818篇文章)
- Linux驱动大全 (8611篇文章)
- Linux下的路由的配置与应用 (11601篇文章)
- Linux命令简介 (9649篇文章)
- DB2中的数据处理 (465篇文章)
- Linux防火墙 (9487篇文章)
- Linux常用基本命令及应用技巧 (44691次浏览)
- 学Linux如此轻松-Linux入门教程 (21805次浏览)
- 扮酷你的桌面 Linux超靓壁纸下载(多图) (20455次浏览)
- 图解红旗Linux 4.0桌面系统的安装 (17365次浏览)
- vmware的vmware tools安装 (13102次浏览)
- Linux系统常见的日志文件和常用命令 (753次浏览)
- TCP/IP基础----为Linux网络做准备 (671次浏览)
- 安装Linux之前 (600次浏览)
- 初学者如何熟悉Linux内存管理机制 (593次浏览)
- Linux Apache+MySQL+PHP简明指南v2 (573次浏览)



