并行方式处理DB2 for iSeries索引

简介

当人们考虑在数据库引擎中进行并行处理时,他们立即会想到通过使用多个处理器处理单个查询来达到改进的 查询响应时间。人们往往没有注意到:并行处理也可以加速索引处理,从而改进数据库服务器的总体性能。使用 IBM DB2 Universal Database (UDB) for iSeries,就有可能将多个 CPU 用于索引处理。特别是,当创建索引以及由于底层数据更改而维护索引时,DB2 UDB for iSeries 可以使用多个处理器。以并行方式创建和维护索引的能力可应用于传统的二进制基数和编码的向量索引结构。

DB2 UDB for iSeries 并行处理只可以在 iSeries 服务器上使用,其中已经购买、安装和激活了 DB2 对称多处理(DB2 Symmetric MultiProcessing,DB2 SMP)特许功能部件,如启用并行处理中所述。

并行索引创建

DB2 UDB for iSeries 可以将并行处理用于创建 SQL 索引和用键值标识的逻辑文件(即,CRTLF 命令)。并行索引处理是通过如下方式完成的:在逻辑上,将基本表分成多个数据段,接着每个进程为指定的表段构建索引键值。然后,将由每个并行进程执行的任务合并在一起来完成最后的索引结构。

正如您在 图1 中所看到的那样,使用附加的 CPU 资源可以充分减少创建索引所花费的时间。这种能力在非常大型的数据库环境中或者在需要尽快重新创建索引的恢复方案下变得十分重要。

图1. 启用并行性之后极大地改进了索引构建时间

并行索引维护

索引维护的任务是更改索引键以反映对相关数据库行的更改(通常通过 insert 、 update 或 delete 引起)。如果更改了客户的订单号或者新的客户订单添加到了数据库,则必须更新所有包含订单号列作为键字段的索引。索引的维护(或更新)影响与添加或更改订单相关的整个事务时间。

如果数据库行更改影响多个索引,那么这些索引的维护会串行发生,缺省情况下,每次维护一个索引。首先,订单号更改被传播到 IndexA。对 IndexA 的更改完成之后,订单号被传播到 IndexB,依此类推。

并行索引维护涉及同时维护多个索引。客户的订单号更改可以被同时传播到 IndexA 和 IndexB。这个并发索引维护处理减少了在整个数据库中更改订单号所花的总计时间。并行索引维护用资源换取了时间,提高了给定应用程序或事务的 I/O 速度。

图2 反映了可以通过并行维护多个索引达到的节省时间。在图2中,新行被装入具有多个索引的表中,并行索引维护将装入时间缩短到二到三分之一。

图 2. 当索引维护并行发生时装入时间得到改进

仅当应用程序处于下列情况时,DB2 UDB for iSeries 才使用并行索引维护:

正在执行 8 行或者更多行的分块插入(或写)。

相关表上定义了两个或两个以上的索引。

一般可以在成批更新和数据仓库装入过程中找到分块插入,所以并行索引维护将在这些环境中产生最显著的性能效果。

技巧:如果装入进程添加到表的新行多于该表行数的 20%,那么通常建议在装入之前先删除索引,然后在装入进程完成之后使用并行处理来重构索引。

启用并行处理

在安装 DB2 SMP 功能部件之后,有几种激活并行处理的不同方法,以便可以执行并行索引构建和维护。

时间: 2024-11-01 05:50:11

并行方式处理DB2 for iSeries索引的相关文章

log4net是否支持以ODBC方式连接DB2?

问题描述 项目中想使用log4net,但数据库是DB2.如果使用DB2的DLL,将不得不安装DB2Client,因此想采用ODBC的方式,但试了半天都没成功,不报错但写不进数据库,不知是配置有问题,还是log4net本身并不支持以ODBC方式连接DB2?测试时未加入参数<?xmlversion="1.0"encoding="utf-8"?><configuration><configSections><sectionname

DB2 v10.5索引特性的功能和性能使用案例

索引是数据库的应用中提高查询性能的重要手段.DB2 v10.5 加入了多项关于索引方面的改进来,提升了索引的功能和性能,让索引的使用变得更加灵活和方便.这些新特性包括:排除空键索引(EXCLUDE NULL KEYS INDEX).表达式索引(INDEX ON EXPRESSION)以及新的索引键排序方式随机排序(Random)的支持. 在http://www.aliyun.com/zixun/aggregation/29707.html">最新版本的 Optim Query Worklo

DB2如何评估索引碎片是否是缓慢的RUNSTATS根源

索引碎片可能由正常的数据库活动导致,比如 INSERT 和 UPDATE.当索引变得高度碎片化时,会对 RUNSTATS 性能产生重大影响.您可学习识别何时出现了这种情形,并采取更正措施. 本文适用于运行 DB2 9.7 或更低版本的安装.在引入了提前读预取 (readahead prefetching) 的 DB2 10.1 中,索引碎片对 RUNSTATS 性能不会产生同样的影响. 索引扫描性能对 RUNSTATS 性能有何影响 在您提交以下命令时,DB2 会收集表和它的所有索引的统计数据:

并行方式全表扫描功能已提交 PG 9.6 版主干代码

我以前建议过将并行全表扫描功能加入至PostgreSQL 9.5中,但未实现.然而,今天我很高兴地向各位通报 我已经将第一版本的并行扫描功能提交至PostgreSQL的开发主分支中,我们确认它将会包含在将要发布的9.6版本中. 为PostgreSQL增加并行查询功能,目前这只是第一步,它也是我长久以来的一个梦想,我已为此工作了好几年了, 最早真正开发时是在9.4版本的开发期间,那时我主要是开发了一些后台动态进程和动态共享内存:接着在9.5版本 期间,我又增加了很多有关并行机制的底层基本加松的开发

谈谈DB2的索引设计及优化

在数据库日常优化中,索引是经常使用的手段之一.本文由DB2数据库专家刘自传就围绕索引从DB2索引的扫描方式.DB2在索引列上应用谓词.在DB2中如何设计索引.在DB2中如何做索引的深度清理展开一些讨论.学习,更进一步探索索引的奥妙. 专家简介     刘自传   拥有10年IT从业经验,DB2数据库专家:具有多年的SQL开发.C语言开发.DB2运维及诊断优化经验:获IBMDB2 V10.1 for LUW的初.中.高级的DBA认证:擅长DB2的SQL优化.故障诊断及性能调优:db2china.n

MySQL下使用Inplace和Online方式创建索引的教程_Mysql

MySQL各版本,对于add Index的处理方式是不同的,主要有三种: (1)Copy Table方式 这是InnoDB最早支持的创建索引的方式.顾名思义,创建索引是通过临时表拷贝的方式实现的. 新建一个带有新索引的临时表,将原表数据全部拷贝到临时表,然后Rename,完成创建索引的操作. 这个方式创建索引,创建过程中,原表是可读的.但是会消耗一倍的存储空间. (2)Inplace方式 这是原生MySQL 5.5,以及innodb_plugin中提供的创建索引的方式.所谓Inplace,也就是

DB2获取当前用户表、字段、索引等详细信息_DB2

 获取所有表.字段.索引等详细信息 SELECT d.name tbName, COALESCE(d.remarks, '') tbDesc, a.name columnName, a.coltype columnType , decode(a.nulls,'Y','1','0') notNull, decode(a.identity,'Y','1','0') auto, a.longlength width, a.scale precision, COALESCE(a.remarks, '')

DB2 9 中 15 个 pureXML 性能最佳实践

原文http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0610nicola/   DB2 9 中 15 个 pureXML 性能最佳实践 Matthias Nicola (mnicola@us.ibm.com), DB2/XML Performance, IBM Silicon Valley Laboratory 简介: DB2 9 引入了 pureXML 支持,这意味着 XML 数据将以其固有的层次格式被存储和查

MySQL索引之全文索引(FULLTEXT)

MySQL索引之全文索引(FULLTEXT) MySQL创建全文索引 使用索引时数据库性能优化的必备技能之一.在MySql数据库中,有四种索引:聚焦索引(主键索引).普通索引.唯一索引以及我们这里将要介绍的全文索引(FUNLLTEXT INDEX). 全文索引(也称全文检索)是目前搜索引擎使用的一种关键技术.它能够利用[分词技术]等多种算法智能分析出文本文字中关键词的频率和重要性,然后按照一定的算法规则智能地筛选出我们想要的搜索结果. 在MySql中,创建全文索引相对比较简单.例如:我们有一个文