我们今天主要向大家讲述的是DB2并行索引的创建与维护,DB2 UDB for iSeries 能将并行处理用于创建 SQL 索引与用键值标识的逻辑文件(即,CRTLF 命令)。DB2并行索引处理主要是通过如下方式完成的:
在逻辑上,将基本表分成多个数据段,接着每个进程为指定的表段构建索引键值。然后,将由每个并行进程执行的任务合并在一起来完成***的索引结构。
正如您在 图1 中所看到的那样,使用附加的 CPU 资源可以充分减少创建索引所花费的时间。这种能力在非常大型的数据库环境中或者在需要尽快重新创建索引的恢复方案下变得十分重要。
图1. 启用并行性之后极大地改进了索引构建时间
DB2并行索引维护
索引维护的任务是更改索引键以反映对相关数据库行的更改(通常通过 insert 、 update 或 delete 引起)。如果更改了客户的订单号或者新的客户订单添加到了数据库,则必须更新所有包含订单号列作为键字段的索引。索引的维护(或更新)影响与添加或更改订单相关的整个事务时间。
如果数据库行更改影响多个索引,那么这些索引的维护会串行发生,缺省情况下,每次维护一个索引。首先,订单号更改被传播到 IndexA。对 IndexA 的更改完成之后,订单号被传播到 IndexB,依此类推。
并行索引维护涉及同时维护多个索引。客户的订单号更改可以被同时传播到 IndexA 和 IndexB。这个并发索引维护处理减少了在整个数据库中更改订单号所花的总计时间。DB2并行索引维护用资源换取了时间,提高了给定应用程序或事务的 I/O 速度。
图2 反映了可以通过并行维护多个索引达到的节省时间。在图2中,新行被装入具有多个索引的表中,并行索引维护将装入时间缩短到二到三分之一。
图 2. 当索引维护并行发生时装入时间得到改进
仅当应用程序处于下列情况时,DB2 UDB for iSeries 才使用DB2并行索引维护:
正在执行 8 行或者更多行的分块插入(或写)。
相关表上定义了两个或两个以上的索引。
一般可以在成批更新和数据仓库装入过程中找到分块插入,所以并行索引维护将在这些环境中产生最显著的性能效果。
技巧:如果装入进程添加到表的新行多于该表行数的 20%,那么通常建议在装入之前先删除索引,然后在装入进程完成之后使用并行处理来重构索引。
【编辑推荐】