例如,图 5 展示了一个由 5 个分区组成的数据库分区组:
图 5. 3 个示例数据库分区组
在这种情况下,Database Partition Group 1 横跨除一个数据库分区外的所有数据库分区。它还包含一个名为 'Database Partition Group 2' 的单分区数据库分区组。另外,'Database Partition Group 3' 也与 Database Partition Group 1 共享了一个数据库分区。
可以用 CREATE DATABASE PARTITION GROUP 语句创建新的数据库分区,用 ALTER DATABASE PARTITION GROUP 语句修改数据库分区。
数据被划分到一个数据库分区组中的所有分区上,可以为数据库分区组添加一个或多个数据库分区,或者从中去掉数据库分区。属于数据库系统配置一部分的每个数据库分区都必须在一个名为 db2nodes.cfg 的分区配置文件中定义。一个数据库分区组最多可以包含为数据库系统定义的所有数据库分区。
当创建或修改一个数据库分区组时,就会有一个与之关联的分区映射。数据库管理器可以通过将分区映射与分区键和散列算法相结合,来确定数据库分区组中的哪些数据库分区将存储给定的数据行。在一个非分区数据库中,不需要分区键或分区映射。过一会儿我们将详细讨论这些概念。
一个数据库分区是数据库的一部分,其中具有用户数据、索引、配置文件和事务日志。有一些默认的数据库分区组是在数据库创建时被创建的:
- IBMCATGROUP - 用于包含系统编目的表空间的默认数据库分区组。
- IBMTEMPGROUP - 用于系统临时表空间的默认数据库分区组。
- IBMDEFAULTGROUP - 用于包含用户表的表空间的默认数据库分区组。
用于已声明的临时表的用户临时表空间可以在 IBMDEFAULTGROUP 或任何用户创建的数据库分区组中创建,但不能在 IBMTEMPGROUP 中创建。
为了创建一个新的由 db2nodes.cfg 中所有分区组成的分区组,可以发出以下命令:
create database partition group ALLPART on all dbpartitionnums
如果您想创建一个新的分区组,且这个分区组只包含分区 1 和 2,可以发出如下命令:
create database partition group PART12 on dbpartitionnums (1,2)
分区兼容性
可对分区键的对应列的基本数据类型进行比较,并可将它们声明为是分区兼容的(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 部分可以存储在相同的表空间中,也可以分别放到不同的表空间中,以提高性能。
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>>
论坛入口 <<
上一页 1 2 3 4 5 67 8 9 下一页
上一篇:《SUSE Linux v9.1 Pro Final DVD》(SUSE Linux v9.1 Pro Final DVD)[ISO] 下一篇: 安装配置-安装Suse Linux 10
|