WEB开发网
开发学院数据库DB2 在Linux上利用数据分区功能提高可伸缩性和性能 阅读

在Linux上利用数据分区功能提高可伸缩性和性能

 2009-12-23 15:00:13 来源:WEB开发网   
核心提示:数据库备份当执行离线数据库备份时,需要单独备份编目分区,在Linux上利用数据分区功能提高可伸缩性和性能(14),但是,在线备份时就不需要这样,并且谈到在 SUSE Linux Enterprise 环境中启用 DPF 时在设计上的一些考虑,更好地理解了 SUSE Linux 环境中的 DB2 DPF 之后,因为日志是

数据库备份

当执行离线数据库备份时,需要单独备份编目分区。但是,在线备份时就不需要这样,因为日志是包括在备份镜像中的。例如,我们有一个名为 sample 的数据库和一个 /dev/backup 目录,从所有分区那里都可以访问这个目录。

首先需要备份位于分区 0 上的编目分区,这里只需指定 "<<+0<"" (在这个例子中)

db2_all '<<+0< db2 BACKUP DATABASE sample TO /dev/backup'

接着备份其他分区(除了分区 0),方法是指定 "<<-0<":

db2_all '|<<-0< db2 BACKUP DATABASE sample TO /dev/backup'

注意,前缀 "|" 将导致依次运行 BACKUP 命令。现在,在 /dev/backup 目录中可以找到每个分区的备份镜像。

表中行的分布

DBPARTITIONNUM 函数可用于确定一个行所在的分区。例如,如果用在一个 SELECT 子句中,那么该函数将返回表中组成 SELECT 语句结果的每一行的分区号。

该函数的参数必须是一个表中某一列的全限定或非限定列名。结果的数据类型是 INTEGER,并且不会为 null。由于只返回行这一级的信息,所以不管指定表的哪一列,结果总是相同的。如果没有 db2nodes.cfg 文件,则结果为 0。

例如:

select lastname, dbpartitionnum(lastname) as part_num from employee order by 1

清单 7. 使用 dbpartitionnum 函数的结果集

LASTNAME    PART_NUM
--------------- -----------
ADAMSON          0
BROWN           2
GEYER           1
GOUNOT          1
HAAS           1
HENDERSON         0
JEFFERSON         1
JOHNSON          1
JONES           3

节点和数据库目录

节点(node)目录包含在建立从客户机工作站到所有合适的数据库服务器的通信时所需的信息。

数据库(database)目录包含客户机所连接到的所有数据库的数据库访问信息。

设计上的考虑

DB2 Design Advisor 是获得有效的分区建议的最直接的工具,可以通过 Control Center GUI 或 db2advis 命令行工具来使用它。通过一个可更新的分区映射,结合一个散列算法,可以指定分区键与数据库分区的映射,这个映射可用于确定每个数据行的位置和检索。

于是,对于大型的表,工作负载可以分布在多个分区上,而更小的表也可以存储在一个或多个数据库分区上。由于每个数据库分区都有它的数据上的本地索引,因此提高了本地数据访问的性能。

DB2 还支持部分分块(de-clustering),在此情况下,表和表空间可以分布在可用分区的一个子集上。取决于数据库分区的数量,您可以有一个或多个单分区的数据库分区组,以及一个或多个多分区的数据库分区组。每个分区必须使用一个惟一的分区号,而同一个数据库分区可以属于一个或多个数据库分区组中。

为了确保包含系统编目表的分区能够快速恢复,应避免将用户表也放在那个数据库分区上。为此,可以将用户表放在不包括 IBMCATGROUP 数据库分区组中的数据库分区的数据库分区组中。

除非想要利用与更大的表的并置,否则应该将小型的表放在单分区的数据库分区组中。应避免使中等规模的表横跨太多的数据库分区。例如,对于一个 100 MB 的表,将它放在包含 16 个分区的数据库分区组上可能比将它放在包含 32 个分区的数据库分区组上得到的性能要好。

您可以使用数据库分区组来将在线事务处理(OLTP)表与决策支持(DSS)表隔离开来,以确保 OLTP 事务的性能不受负面影响。

在多分区数据库分区组中,如果索引是分区键的超集,那么只能创建一个惟一的索引。

在创建数据库时,应确保在用于数据库位置的 "ON" 子句中指定一个本地(非共享)目录。例如,

CREATE DATABASE SAMPLE ON /db2_db

其中 /db2_db is 是一个预先存在的本地目录。

在默认情况下,数据库管理器配置中的默认数据库路径(DBTDBPATH)参数是 instance owner(被 NFS 共享)的 home 目录的位置。如果在不指定数据库位置的情况下创建数据库,那么将使用 DBTDBPATH 创建数据库,这里 DBTDBPATH 指向共享的 instance-owner 目录。这样将降低性能。

创建数据库之后,应该确保每个数据分区还有它自己的日志本地目录。您可以使用以下命令:

db2_all ";db2 update db cfg for SAMPLE using NEWLOGPATH /db2_db/logs"

节点号被自动附加在路径的后面。这样做是为了维护多逻辑节点配置中路径的惟一性。

结束语

本文讲解了在 DB2 UDB 中使用 Data Partitioning Feature (DPF) 的理论基础,详细解释了 DPF 的安装过程和一些重要概念,并且谈到在 SUSE Linux Enterprise 环境中启用 DPF 时在设计上的一些考虑。更好地理解了 SUSE Linux 环境中的 DB2 DPF 之后,就可以很快地掌握如何在 SUSE Linux 环境中启用 DPF。

上一页  9 10 11 12 13 14 

Tags:Linux 利用 数据

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接