ACCESSdb2性能优化

属性优化概述

DB2 的特性优化可以打三只地方剖析:内存,CPU 和 I/O 。DB2
性能优化是千篇一律项较为复杂的综合性的工作 ,
需要针对题目的源作总体的探索与琢磨。同时为急需比深厚的数据库管住更以及优化知识。这对新家的话也许小勉强。但是于博动静下,随着
DB2
数据库被的数据量的频频增长要用户数的疯长,数据库系统的性质会明白下降,而此刻飞稳定性能上之瓶颈则第一。下面简要地介绍一下
DB2
的调优的一些因素与工具,以及有法则,使新大家对性优化会来一个横的刺探。

内存因素

于内存方面,主要是考虑缓冲池 (BUFFERPOOL)
的动。缓冲池是千篇一律切片用来缓冲从磁盘上读取的数与目录的内存区域,这些数量及目录信息在缓冲池中开展演算后最终还要写回磁盘。缓冲池的页面大小有四种植
(4K,8K,16K,32K),分别对诺季种不同页面大小的表空间。缓冲池的大大小小决定了能够从磁盘上缓冲数据的容量大小。当然缓冲池也非是进一步怪益好,缓冲池过好可能会见导致连日数据库的时刻过长,因为在连数据库时要也数据库的缓冲池分配内存空间。可以透过计算缓冲池的命中率来评估缓冲池的使用频率:缓冲池命中率
=(1-(( 数据物理读 + 索引物理读 )/( 数据逻辑读 + 索引逻辑读 )))
*100%,缓冲池命中率越老征缓冲池的运用频率高。缓冲池命中率太小说明缓冲池太小应当调大。其中的数据物理读,索引物理读以及数额逻辑读与索引逻辑读都可于缓冲池的快照中获取。

每当内存方面使考虑的另外几个根本元素是排序堆 (SORTHEAP),锁列表
(LOCKLIST), 日志缓冲区 (LOGBUFSZ)
。排序堆在查询结果带有排序选项而从未有关索引对当时将会晤吃使用,排序堆太小会生排序溢起
(Overflowed),
那些在排序堆中作不下之排序数据将会晤漫起至一个临时表中,这会使性能降低。与
SORTHEAP 参数相关的凡 SHEAPTHRES_SHR 和 SHEAPTHRES,SHEAPTHRES_SHR
限制了一个数据库中共享排序的绝充分内存,SHEAPTHRES
限制了个体排序的太要命内存。 LOCKLIST
指的凡一个数据库被之所以来存放锁的内存空间,当以此参数设得过些微会导致在沿用就这有些资源后致锁升级(即多独行锁转化为一个表锁来刑释解教出重新多的资源)。这会导致系统的并行性下降,很多运用连接起挂于,使得系统的性质衰退。所以尽可能调大
LOCKLIST 参数,这里用指出 LOCKLIST
指的连无是沿之个数,而是坐数库页为单位的同等片内存区域(在 32
位系统遭到每个锁得 96 单字节,锁上加锁之讲话每个锁则需 48 只字节。在 64
位系统被每个锁得 128 个字节,锁上加锁之口舌每个锁则需 64 单字节)。与
LOCKLIST 参数对应之是 MAXLOCKS 参数,MAXLOCKS
定义的凡一个比重,它指定了一个应用程序所能占的无限老的锁空间占
LOCKLIST 的比重。日志缓冲区 (LOGBUFSZ)
指的凡日记在写到磁盘以前用于缓冲的等同切开内存空间,这样可以减去写日记带来的了多之
I/O 。

从本 9 以后 DB2 推出了一个初特点自调节内存管理器 (STMM: Self Tuning
Memory Manager), 这个特点使得众多内存参数如前方所陈述之
SORTHEAP,LOCKLIST,LOGBUFSZ 等展开活动调节,当数据库参数
SELF_TUNING_MEM 设为 ON, 这些参数设为 AUTOMATIC
即可以拓展活动调整。这样可以节省成千上万人造调整之年华。

CPU 因素

关于 CPU 因素首先是考虑 DB2 优化器 (OPTIMIZER) 对访问计划 (ACCESS PLAN)
的分析和优化。一般的话,一长 SQL
在实践时首先会见给分析,然后开展语义分析,进而再写 SQL, 优化器会对重写过之
SQL
进行基于成本的剖析最终选择最为可行的拜会计划。最终老成可实行代码(执行计划)来执行就长达语句。查询访问计划之工具发出过多,既来图形化工具
Visual Explain,也产生令 db2exfmt 来格式化解释表 (Explain tables)
中的数量生成 ACCESS PLAN 。还有命令 db2expln 查询 ACCESS PLAN 。

每当 DB2
里之优化级别分为九级,缺省凡是第五层,级别越强优化器分析得程度进一步怪。这个级别有数据库配置参数
DFT_QUERYOPT 决定。并无是级别设得更为强性能更加好,因为对一些较为简单的
SQL 语句,如果优化级别过高那么花在优化 SQL
上之日虽见面过长,而实行时间相对来说很不够,有些得不偿失。在选择访问计划时,索引围观的效率往往会比表扫描要大,所以索引的优化也是值得注意的。正确的起目录会如查询性能大的增强。

于 DB2 中连接 (JOIN) 分为三种植:嵌套循环连接 (nest-loop join), 合并连接
(merge-join), 散列表连接 (hash-join)
。一般的话效率低的是嵌套循环连接,这种连接使用的凡笛卡儿集,进行频繁循环往复遍历得到结果。而合并连接和散列表连接只进行同样不行巡回遍历,相对来说效率比高。其中散列表连接可以采取多个等式做也条件而合并连接只能使用单科等式作为基准。但是于有索引围观的状下嵌套循环连接效率则还胜似。当优化级别等零时,连接只能用嵌套循环连接,
当优化级别大于等于 1 时,连接可以动用统一连接。当优化级别大于 5
时连接可以用散列表连接。散列表连接要求 SORTHEAP
比较异常,因为要啊生成散列表准备空间。

每当设想 CPU 因素经常还要考虑 CPUSPEED 这个参数,这个参数标明了 CPU
的运转速度,它见面帮助优化器评估最好之拜访计划。一般的话这个参数设为
-1,优化器将自行测算 CPU
的速度。另外利用多分区的特性可把一个数据库分布到大半高机械上,这样好充分利用多宝机械的
CPU 的资源对应用程序的政工进行并行处理,从而增强数据库的性质。

I/O 因素

有关 I/O 因素使考虑以下几单方面:首先是磁盘的 I/O, 为了能最大化磁盘的
I/O
可以管多少,索引以及日志分别在不同之硬盘上。因为在一个工作中数量和目录可能要而做客,而于业务提交时,数据及日志要以写副磁盘,而且发生或索引也如协同保障,所以将她放在不同的硬盘上可假设其的读写并行运行,从而不致使磁盘成为瓶颈。同时选择数据库管理表空间
(DMS) 要比较系统管理表空间 (SMS) 性能好,因为读写 SMS 需要经过操作系统的
cache 再届缓冲池,而足采取裸设备的 DMS 则免需要。但是 DMS 相对 SMS
来说维护起来较麻烦。

从如果考虑的凡日记文件之大大小小,当数据库在形容作业日志时当一个日志文件写满后会转接另外一个日志文件,这种日志文件的切换会导致操作系统及之开发。所以应该尽量以日志文件大小(LOGFILSIZ)设得杀一部分,这样好减去日志文件切换的次数。但是日志文件了死难免会造成部分空间的浪费。

并且为只要考虑到断级别之要素,在 DB2 中隔离级别分成 4
级:可另行的朗诵,读稳定性,游标稳定性和不提交的宣读。这四种级别逐个退。越强的隔离级别越能够保证数据完整性,但却会下滑并发性,所以应综合权衡后做出决定。隔离级别可以由此如下命令来改变:
CHANGE ISOLATION TO=CS|RR|RS|UR

于连接方面还要考虑到代办及连接的涉,这为会见影响至数据库的并发性,具体信息方可参考资源有。

说到底只要考虑的要么关于多分区的性状。在差不多分区数据库被,一个请求首先传到协调分区,然后由协调分区将请求细分成多独片发送至另外分区,这样数据可在逐个分区进行相互读写,实现
I/O 最大化。

属性优化相关工具

于 DB2 中发出成千上万同性质优化相关的工具与指令,下面简单地介绍几栽:

  • SNAPSHOT : 这是 DB2
    获取数据库信息快照的均等种植艺术。它会抱在数据库中有关缓冲池,锁,排序和
    SQL 等等信息。 DBA
    可以通过获取这些消息来对数据库中之每组件进行评估来分析问题之瓶颈。
  • DB2PD :
    这个令是故来分析数据库的手上状态,它含有很多参数。可以就此来分析应用程序,代理,内存块,缓冲池,日志与沿状态等信息。
  • RUNSTATS :
    这个令是因此来收集数据库被数量的行统计信息,并更新到系统表中。更新统计信息将会晤促使优化器选择更符合实际的霎时的访问计划,从而加强工作效率。
  • REORG :
    这个令用来重新整理数据库中数据以及目录的碎片,使其在大体及得以好以一定规则排列,这样可以加快检索的快慢。
  • DB2DART :
    这个令是一个数据库的剖析及喻工具,它用来检查表空间,索引以及数据库结构的不错,分析在性质问题达到之组成部分由。
  • DB2SUPPORT : 这个令用来集 DB2
    和操作系统的富有相关消息并转移一个压缩文件,可传送给优化人员进行剖析。

还有局部 DB2
中其他的文书可以据此来分析性能问题,比如说诊断日志,追踪文件等。一些老三正值的工具为可供参考,如“
tivoli monitor for db2 ”, QUEST 等等。

旁属性因素

  • XML 的优化: 在 DB2 V9 以后引入了纯 XML
    的数据类型,这是同等种层次型数据类型。这和习俗的关系型数据类型不雷同,在
    V9 先 DB2 存储 XML 数据应用 CLOB 数据类型,应用程序在存取 XML
    数据的时节要优先使解析 XML 再以那数量。而在纯 XML
    类型中,可以一直读取其中的元素,这样性能会发出较生之加强。另外对纯
    XML 还有 XML 的目录,也会见叠加存取的性。
  • 操作系统: 数据库有为操作系统之上,操作系统的属性将一直影响至数据库的运作效率,因此优化操作系统也是优化数据库的一个重要过程。在操作系统级别达可以对内存进行优化,比如说对网共享内存,信号量以及虚拟内存的设置等等都得影响到数据库的性能。同时于磁盘的遍布及也会潜移默化及数据库
    I/O 效率。
  • 网络: 网络将会见潜移默化至数据库的 I/O
    性能,当数经过网络以客户端以及劳务器端进行传递时,网络达到出现瓶颈会导致数据库
    I/O
    性能显降低。所以选择优质的纱设施及配备不错的大网环境对数据库性能相当重大。同时为要是考虑到防火墙的要素,有时防火墙会阻挡来自某些
    IP 的数据包。

 

回页首

DB2 性能问题分类以及析思路

DML 性能问题

DML(Data Manipulation Language)
包括了询问,增加,删除和更新记录等操作。首先看一下询问的特性问题,在查询同一摆设表要多张表的共同查询时有时反应时间会比丰富,这令用户难以忍受。针对这种问题,可以由此下述方法来分析:

  • 于查询的接连要极子句中之连带字段是否加了目录。 ( 关于 SQL
    的优化可以参见 SQL 优化相关文章,本文不再赘述 ) 。
  • 观察缓冲池的大大小小,缓冲池太小会造成许多数不可知诵到缓冲池而直白打硬盘上读取,造成很死之瓶颈。另一方面关于缓冲池预取的设置,一般会以预取大小
    (PREFETCHSIZE)
    设定也区段大小与容器个数的积压,这样好极其特别使用到预取的并行性。
  • 以询问中提到到 order by
    字词时,如果排序的字段没有安装索引那么排序将见面因此到内存中的排序堆
    (sortheap) 。如果排序堆了些微会促成排序溢起至硬盘上 (Overflowed)
    造成性能衰退。
  • 又还要考虑到 RUNSTATS/REORG 因素。 RUNSTATS
    命令可以创新表中的统计信息。当表中之多少经过多次的增删改后该对应的统计信息会发生变化,而优化器选择执行计划的下是因这种统计信息来计量的,所以运行
    RUNSTATS 此时显示更加重大。 REORG
    可以整理数据存储的大体结构,也能够减多少扫描的工夫,提高查询的性能。
  • 由存储方面应该注意的凡选取裸设备的 DMS 要比较 SMS
    性能而好,因为其掉了同一交汇文件系统的休养冲而一直访问缓冲池。
  • 学会用 optimize for n rows 子句,它好增进前面 n
    条记录之显得速度。这样可使用户能够先飞翻这 n
    条记录,然后再次拘留其他记录。减少了用户之等待时。
  • 物化查询表 (MQT)
    也是提高查询性能的均等种植手段,它好以经常使用的查询结果集存储到均等张中间表中,在查询时减少了数据检索的岁月。
  • 于架设上以 MPP 或 SMP 也是增高查询或写操作性能的伎俩。
  • 本着繁复查询时方可以数据库配置参数 DFT_QUERYOPT( 缺省询问优化类 )
    的价值如果得高有(7 要 9),针对简单询问好用她一旦得不比有 (3 或
    5),因为设置更强优化器所作的分析就是更为深入,耗费在变计划及之年月尽管越是多。
  • 针对 C/S
    结构的查询好用查询语句写于服务器端生成存储过程来减多少的纱传输和客户端的压力。而通过编译的储存过程实行得更便捷。
  • 还要考虑到断级别及锁之因素,隔离级别越强越能够保证数据的完整性,但又会减弱并发性。这一点内需权衡需求使定。
  • 网因素吗不得忽略,将数据库服务器参数 RQRIOBLK 设为 65534
    可以对应地提高网络吞吐量。(缺省值 32767)
  • 说到底得考虑的是数据库的布局,在某些情况下,在少数表中加进部分冗余字段虽然牺牲了部分空间及保障本,但是当询问时方可减去过多连连操作,这样可以大大提高查询性能。就是之所以空间换取时间。

通下去看一下增删改之性能优化措施:

  • 第一是索引因素,在做增删改时数据库会针对表中的目做相应的改。这会损耗一定的资源,所以于保证数据完整性的前提下可以优先将引得删除,待到增删改了晚还重建这些索引。这为会省去一些时空。将引得和数量在不同之硬盘上吧足以多写操作的并行性。
  • 附带如果考虑日志因素,在数码形容操作的同时,数据库系统吧在护在事情日志,所以应尽量减少日志维护的代价。将
    auto commit 设为
    false,可以减掉提交的次数(同时也回落了描写日记的次数)。增大
    LOGBUFSZ,LOGFILSZ
    可以减刷新日志的次数和日志文件切换的次数。或者将表的性改吧”
    ACTIVATE NOT LOGGED INITIALLY ” ,
    这样好屏蔽表的日志操作,以增进写操作的性能,但是去工作日志的表的数量大麻烦修复,这一点急需权衡。
  • 以日志与数目分别居不同的硬盘上呢得以加写操作的并行性。
  • 当插入记录时用 APPEND MODE 可以免去 DB2
    寻找表中的悠闲空间的年华若是一直插到表尾,从而增强插入的习性。
  • 有关并行性的素,采用 MPP
    模式可以使用并行处理的法子加码写操作的特性。将容器分散于不同的硬盘上也可增加写操作的习性。
  • 还要考虑到律与触发器的影响,在描绘操作时该尽量避免表中发生约束与触发器。在保证数据完整性的前提下而当频繁大批量描写操作时事先将约还是触发器去除,完毕后重建。
  • 与询问同一,写操作同样如果考虑到断级别及沿之素(参见查询优化部分)。
  • 于 insert 语句被包括多执得削减客户机 –
    服务器通信次数,提高插入性能。如:insert into table1 values (1, ’ a
    ’ ),(2, ’ b ’ ),(3, ’ c ’ ) 。
  • 再有一个需考虑的元素是 DB2 V95 在 UNIX
    上之以线程模型,在操作系统被的开支变多少,使得写操作性能而较之前的
    DB2 的版要好。

DB2 实用程序的性能优化

优先来拘禁一下怎么增强备份操作的性质:

  • 增进数据库配置参数 UTIL_HEAP_SZ
    的高低,这个内存区域用来啊备份和还原操作提供缓冲。
  • 减整库备份,多采取表明空间备份需要的表空间。
  • 减掉了备份,多应用增量备份或 DELTA 备份。
  • 增加备份命令中的 PARALLELISM
    参数来充实备份的并行性(增加线程或进程)。
  • 长备份命令中的 BUFFER 参数值。
  • 加备份的目标目录,最好能用大半只目录在不同的硬盘上,这样好加备份的并行程度。

再来拘禁一下怎样增强恢复操作的习性:

  • 同备份操作一样,需要增大数据库配置参数 UTIL_HEAP_SZ 的大小。
  • 多恢复命令中的 BUFFERS 参数值。
  • 加恢复命令中的 PARALLELISM
    参数来增加备份的并行性(增加线程或进程)。
  • 容器分布于不同之硬盘上啊堪要恢复操作加快(提高并行性)。
  • 采用 SMP 模式来激活多代理来增加恢复操作的并行性。

增长导入操作(import)的特性 :

  • import 操作看似 insert 操作,因此多法好参见 insert
    的调优步骤。
  • 上加 compound=x 选项可要导入操作批量拓展而减少了网的通信量。
  • 长 COMMITCOUNT 的价值已经缩减 LOG 的 I/O 次数。
  • 启用缓冲区插入,对 db2uimpm 程序包使用 INSERT BUF
    选项又绑定到数据库。在 import 以前执行命令: db2 bind db2uimpm.bnd
    insert buf

加强导出操作 (export) 的属性:

  • Export 操作看似 select 操作,因此多法可参见 select
    的调优步骤。
  • 拿 export 操作导出的公文在同数据和日志不同的硬盘上为减掉 I/O
    的竞争。

增强载入操作 (load) 的性:load 操作中日记的刻画操作比 import 要少,所以
load 的习性比 import 要好广大,下面或看如何更好地增长 load 的属性。

  • 在差不多分区环境下,db2 load 会进行互装载,性能会大幅度提高。
  • 丰富 buffer 参数可以追加装载过程遭到的苏存空间,提高性。

出现连接时的性能考虑

貌似的话在接连数比少情况下,db2
的属性会比较稳定。因为此时连接的利用所发生的请求于 db2
代理池中所能发生的调和代理少,这时基本上能满足各级一个求都能被及时的和谐代理所应处理。
在连续集中器激活(MAX_CONNECTIONS >
MAX_COORDAGENTS)的气象下,如果连续数过了协调代理,这时连接所恢复的呼吁虽见面跻身队列等候协调代理服务,并发的连日数增长了,但是一些连接的性质就见面明白降低。此时该考虑激活分区间并行
(SMP) 或多细分区(MPP)特性来增加 I/O 的并行性以及多独 CPU 的竞相运算。

 

回页首

案例解析

询问优化案例

紧接下去这里从一个测验来拘禁一下 DML
操作过程中优化的事无巨细步骤同具体数目。首先看一个询问优化的例证,下面是试验中的建表语句:

 
 CREATE TABLE MCLAIM.T1_DMS ( 
 C11 VARCHAR (10)  NOT NULL ,
  C12 VARCHAR (15)  NOT NULL  , 
  C13 VARCHAR (20)  NOT NULL  , 
  CONSTRAINT C11_PK PRIMARY KEY ( C11)  ) IN DMS_Space; 

 CREATE TABLE MCLAIM.T2_DMS ( 
 C21 VARCHAR (15)  NOT NULL , 
 C22 VARCHAR (25)  NOT NULL  , 
 C23 VARCHAR (30)  NOT NULL  , 
 CONSTRAINT C21_PK PRIMARY KEY ( C21)  ) IN DMS_Space; 

 CREATE TABLE MCLAIM.T3_DMS ( 
 C31 VARCHAR (10)  NOT NULL , 
 C32 VARCHAR (25)  NOT NULL  , 
 C33 VARCHAR (35)  NOT NULL  , 
 CONSTRAINT C31_PK PRIMARY KEY ( C31)  ) IN DMS_Space; 

 

 

早期的环境没有优化,表空间类型 SMS 表空间,查询的表中没有索引,sortheap
过小等等。在这种景象下实行下列查询语句:

 select C12 from TESTOPT.T1_SMS,%SCHEMA%.T2_SMS,%SCHEMA%.T3_SMS 
 where substr(C12,1,10)=substr(C21,1,10) and C22=C32 
 order by C12 asc
 

 

于没有优化的景下获得的终究的履时间是 653
秒,而透过优化后取总的行时间是大概是 15
秒左右。在优化中应用了如下优化步骤:

  1. 选择 DMS 表空间。
  2. 增补加索引:

    CREATE UNIQUE INDEX INDEX_C12 on T1_DMS (C12 ASC);
    CREATE UNIQUE INDEX INDEX_C22 on T2_DMS (C22 ASC);
    CREATE UNIQUE INDEX INDEX_C32 on T2 _DMS (C32 ASC);
  3. 增大 sortheap 的大小

  4. 执行 runstats
  5. 挑适当的优化级别
  6. 精益求精表结构,增加冗余字段。以空间更换时间:
     ALTER TABLE T1 ADD C12_Red VARCHAR(10);
     ALTER TABLE T2 ADD C21_Red VARCHAR(10);
     UPDATE T1 SET C12_Red=SUBSTR(C12,1,10); 
     UPDATE T2 SET C21_Red=SUBSTR(C21,1,10);
     
查询语句变成:  
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<tbody>
<tr class="odd">
<td><pre class="displaycodeliquid" name="code"><code> select C12 from TESTOPT.T1_DMS, TESTOPT.T2_DMS, TESTOPT.T3_DMS 
 where C12_Red=C21_Red and C22=C32 order by C12 asc
 </code></pre></td>
</tr>
</tbody>
</table>

图 1. 询问操作优化示意图 
ACCESS 1 

自图中得以视选择好之表空间类型 ( 数据库管理表空间 )
和添加索引会对性能有良挺之精益求精作用。而上加冗余字段对性能的改善作用最为酷。当然这会波及表结构的变型,是内需以数据库设计阶段考虑的素。同时代价是充实磁盘的挤占空间。

写入操作优化

接通下去是一个状操作的事例(插入)。下面是考试的剧本:

 
 CONNECT TO FFTEST; 
 CREATE SCHEMA TESTOPT; 
 DROP TABLE TESTOPT.T3; 
CREATE TABLE TESTOPT.T3 ( 
C31 VARCHAR (10)  NOT NULL , 
C32 VARCHAR (15)  NOT NULL  , 
 CONSTRAINT C31_A CHECK ( C31 LIKE 'A%' or C31 LIKE 'a%')); 

 CREATE INDEX TESTOPT.INDEX_C31 on TESTOPT.T3 (C31 ASC); 
 ALTER TABLE TESTOPT.T3 ADD CONSTRAINT C31_A CHECK (substr(C31,1,1)= ’ a ’ 
   or substr(C31,1,1)= ’ A ’ ) 
ALTER TABLE TESTOPT.T3 APPEND OFF; 
CONNECT RESET; 
 

 

前期的发明没有优化,含有索引,约束等元素,插入 4 万长条记下大约花了 68
秒钟,而结尾优化后插入 4 万漫长记下才待 6 秒钟。如下是优化步骤:

  1. 删除索引。
  2. 剔除约。
  3. 于 insert 语词被连多行。
  4. 采用 Append 模式
  5. 屏蔽表的日记操作。
  6. 采用并行写操作。
  7. 运用严格的割裂级别。

希冀 2. 栽操作优化示意图 
ACCESS 2 

自图备受好看看压缩索引和束缚好大幅度提高插入性能,而以多条插入语句合并成一行来的机能更不言而喻。

特性调优注意事项

  • 为取得高性能将缓冲池调得过深,导致数据库连不达。这对尚未更的用户来说可能是独灾难,这意味着数据库可能只要重建。最初我们曾犯过这样的错误。现在好经过调试
    DB2 注册参数 DB2_OVERRIDE_BPF
    来装缓冲池的高低,从而能够还连数据库。当然最好好用 STMM
    激活,使内存能够自行调整。
  • 频忽视 runstats 和 reorg
    的意,我们发现不止一个底特性问题,都是由于优化器选择了错的
    access plan 导致系统整体性能降低。而对外示的尽管不仅是 SQL
    执行款,同时为能够会面呈现来 I/O
    瓶颈或系应时间长。这频繁会误导我们错过分析任何地方。但究其根源,很多工夫是由优化器的错误。这些题目反复以再次履行
    runstats 和 reorg 之后便化解了。所以马上有限个命也使特别注意。
  • 每当拓展多少加载的时段往往忽视了目录因素,导致性加载性能降低。我们相遇了这么的一个事例,一摆表导入
    1000 漫漫记下花了 5 分钟,检查了好多部署找不顶由,最后发现这张表上闹
    1 单主键,还有 4
    只外键。将她们去后再行导入只花了几秒钟。所以当拓展 load 或者是
    insert
    的时候尽量以主外键或有关索引删除,加载成功后重建有关索引。主外键尽量通过加载程序来担保它们的数据完整性。这无异触及往往会吃忽略,所以当加载数据前先行检查一下所有表的目录状态和引用关系。
  • 在改 db2
    参数的时节,一软最好好修改一个参数,然后看看效果,在调节其他参数。否则一律破多独参数,调好了邪远非作明白是哪个参数起的意。下次还得全体来平等全方位。还要小心,并非有参数还是进一步充分益好,有时可能会见弄巧成拙。
  • 专注索引的试用,优化好之目对查询语句性能的加强往往会时有发生数十倍的属性改进。所以,调优前可先察看一下系告知句的目录利用状态。这可由此观测
    SQL
    语句和执行计划,看一下早就发目录是否让应用起来了或者是否用建立新的目。这往往比较
    DB2
    系统调优更要。但切记考虑插入操作,索引也会骤降插入的性质。这同点而综合考虑。
  • 是因为 XML 数据可跨页存储,在计划 XML
    数据库时若硬着头皮的采用于生之数据页,这样可以避免 XML
    数据跨页查询,以增进查询性能。
  • 使表分区:有这般一个例:客户发出一样张表的数据量非常非常,每天都见面发出大约
    30 万长长的记下,同时每天还见面去除五天前之笔录,所以此表大概发生 150
    万长记下,现在客户于每天的率先不良查询时要重对表进行索引(因为夜间会见出过多数据,所以新加的数码都没建索引),导致响应非常慢!对于这种题材,后来应用了表分区,用
    6 个分区表来分别装载原来 6
    天之数据。所以查询以及插都只有提到一摆放表,所以响应速度得到大幅度提高。
  • 了解 CHNGPGS_THRESH
    参数,是缓冲池写日记的阀值。有一个事例,在创造索引时比慢,经过检查发现
    CHNGPGS_THRESH 参数过十分,造成每次写日记的早晚数据量过那个,造成 I/O
    瓶颈,适当弱化多少者参数值,可以增加写日记的次数,但屡屡减少每次写日记的数据量,这对大缓冲池里之大表上创立索引时十分管用的。
  • 在导入数据经常尽可能利用 load, 少用 import, 我们开过统计,用 import 花费
    10 分钟之数码,用 load 大概就需要 1 分钟,这大大提高了工作效率。
  • 顾 db2diag.log
    的分寸,当以此文件充分老之时候,数据库的有所操作,包括停启 db2
    都见面特地之缓,有时还是挂起。所以若常常看望这个文件之大小,过很时最好好删掉,重开
    db2 。当然 DIAGLEVEL
    不使使得极其胜,除非为了确诊有问题得到重新多信息,一般默认的 3
    足够了。

 

回页首

复杂的应用环境中的性能优化 (DB2 Performance
Expert)

今昔底养环境都是非常复杂的,性能问题关系到了应用程序,应用服务器,数据库,网络等各种因素。要于犬牙交错的条件遭受高速定位性能的瓶颈非常不方便。下面介绍一个那个实用的工具得以帮用户解决是难题。这个家伙就是
IBM 的 DB2 Performance Expert 。运用 DB2 Performance Expert V3.2
可以快速的找到网的性质瓶颈。如下图所示:

图 3. 网应时间分布图 
ACCESS 3 

从之截图可以看看时应用程序(灰色部分)和数据库(黑色部分)占用了酷要命的比重,是系统瓶颈所在。而生图则详细描述了数据库的一部分状态信息。

图 4. 数据库重点指标信息图 
ACCESS 4 

从上图可以看到,排序溢起深大 ( 到了 100%),说明 sortheap
需要调整,缓冲池 IBMDEFAULTBP 的命中率很没有(只有
69.5%),说明缓冲池太小,需要调大。所以当解析体系性能问题是应用 DB2
Performance Expert 是一个不易的选。

相关文章