在suse linux server上配置db2
本文首先考察了 DB2 UDB for Linux®、UNIX® 和 Windows® 中的 IBM DB2® Universal Database™ 数据分区功能(Data Partitioning Feature,DPF)在性能和可伸缩性方面的优点。然后,完成在 SUSE Linux Enterprise Server 上安装和配置具有 DPF 功能的 DB2 的步骤。您还将学习到一些重要的概念和设计方面的考虑,这些将帮助您快速掌握 SUSE Linux Enterprise 环境中 DPF 的安装。
接下来的两个图展示了 DPF 真正起作用的情况。图 2 说明了 DPF 被用于三台机器上的情况,其中每台机器上有一个分区。
图 2. 每台机器上一个分区,使用高速通信
注意这里使用的高速通信互连,这可以是各机器之间使用的一个 TCPIP 网络。接下来的
特别要注意,在前面几个图中,对称多处理器(SMP)也可以换成单处理器。但是,在 DPF 环境中 SMP 服务器更为常见。
分区键 由表中的一列或多列组成,用于使用户可以选择如何对他们的数据进行分区。用户可以通过使用数据库分区组和表空间,来确定将表数据分布到哪些数据库分区上。
用户交互通过一个数据库分区,即用于该用户的协调分区(coordinator partition)来进行。协调分区与应用程序运行在同一个数据库分区上,或者,对于远程应用程序,协调分区运行在应用程序所连接的那个数据库分区上。任何数据库分区都可以成为协调分区。
要对一个数据库进行分区,需要 DB2 的 Database Partitioning Feature (DPF) 功能。这种可选的 Database Partition Feature 许可只对 DB2 Enterprise Server Edition (ESE) 可用,其费用按照分区数据库中所使用的 CPU 的数量来计算。
在 instance-owning 机器上设置 NFS 服务器
您需要导出 instance-owner 目录,该目录将被其他数据库分区服务器共享。
- 创建 instance-owner 目录,确保该目录被挂载。使用如下命令:
mkdir /db2home
mount /db2home
- 修改 /etc/fstab 中的文件系统表(fstab),使之包括新的文件系统,以便在启动时挂载新的文件系统。条目格式如下:
<device> <mountpoint> <filesystemtype> <options> <dump> <fsckorder>
您的条目看上去可能类似于:
清单 1. 示例 instance-owning /etc/fstab 清单
/dev/had7 /db2home ext3 defaults 1 2
该条目使用一个 ext3 文件系统,这种文件系统在 2.4.16 版或更高版本的 Linux 内核中均受支持,文件系统检查(fsck)程序的顺序被设为 2。
设置好 instance-owning 文件系统后,通过在 /etc/exports 文件中添加以下条目,可以在启动时通过一个 NFS 服务导出这个文件系统:
在这种情况下,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 就可以在存储数据的数据库分区上执行连接或子查询,而不必在数据库分区之间移动数据。这种局部地执行连接或子查询的能力具有显著的性能优点。
要发生并置,表必须:
- 在相同数据库分区组中,且这个数据库分区组不能处在再分配期间。(在再分配期间,数据库分区组中的表可能使用不同的分区映射 —— 它们不是并置的。)
- 有包含相同数量的列的分区键。
- 分区键的相应列是分区兼容的。