DB2性能优化- REORG慢的分析
admin
2023-05-21 12:22:37
0

什么是REORG?

我们知道,数据库中有许多表的存在,而我们可能会经常地需要对表数据进行增删改等操作,经过一系列更改后,逻辑上连续的数据可能会位于不连续的物理数据页上,在许多插入操作创建了溢出记录时尤其如此。按这种方式组织数据时,数据库管理器必须执行其他读操作才能访问顺序数据。而在删除大量行后,也需要执行其他的读操作。

REORG(重组)表的操作会整理数据碎片来减少浪费的空间,并对行进行重新排序以合并溢出记录,从而加快数据访问速度并最终提高查询性能。

 

什么时候需要做REORG?

当数据库里某个表中的记录变化量很大时,则需要在表上做REORG操作来优化数据库性能。

针对数据库对象的大量操作,如反复地删除表,存储过程,会引起系统表中数据的频繁改变,在这种情况下,也要考虑对系统表进行REORG操作。

 

完整的REORG表的过程

一个完整的REORG表的过程应该是由下面的步骤组成的:

 

RUNSTATS ->   REORGCHK ->   REORG ->   RUNSTATS -> BINDREBIND

注: 执行此部分命令前需要连接数据库

 

此处我们就不对REORG做过多介绍,此次主要分享造成REORG慢的原因。

 

 

情景:

某电信网络发票系统每周五晚上9点开始做数据库维护,包括REORGRUNSTATREBIND,维护时间需要大约10 个小时,期间会影响系统正常作业。经优化脚本生成详细维护日志,检查维护部分表的REORG时间过长。整个数据库大小为500GB

 

操作系统版本:AIX 7.1

数据库版本  DB2 V9.7

 

问题:

当前使用串行REORG的脚本,维护时间需要大约10个小时;

改用并行的REORG的脚本,维护时间仍然需要大约9个小时;

 

恢复到使用串行的REORG脚本,并观察系统资源消耗情况,一开始REORG速度很快,但过了不久后,到达了REORG比较慢的表此时使用topas查看系统资源,发现资源消耗下降到一个较低的值,如IO吞吐量:

DB2性能优化- REORG慢的分析

理想的吞吐量



DB2性能优化- REORG慢的分析

当前REORG 慢的吞吐量

 

 

分析:

1.       首先查看DB2的诊断日志(db2diag.log)DB2的管理通知日志(db2inst1.nfy),均没有发现报错;

2.       列举有可能造成REORG时数据量低的原因

1)表空间参数限制(PREFETCH)读写速度

2)操作系统参数瓶颈

3)存储性能瓶颈

4DB2 Bug

5)数据损坏

 

下一步计划方向

-操作系统

-存储

-DB2

-网络

-内存

 

既然我们是负责数据库的,那就先由数据库入手,

 

解决:

1.       DB2入手,监控DB2的监控进度

db2pd -d sample -reorg

 

观察CurCount字段增长,增长慢的话表示REORG的速度很慢

DB2性能优化- REORG慢的分析


2.       找到正在执行的语句,REORG语句db2 reorg table schema.tablename longlobdata

DB2 9.7 中表重组功能也相应做了扩充,REORG 命令多了 LONGLOBDATA 参数。LONGLOBDATA 参数只对 long LOB 列有效。 默认情况下是不启用 LONGLOBDATA 的,因为对 long LOB 列的重组很消耗时间。

官方说明请查看以下链接:

https://www.ibm.com/developerworks/cn/data/library/techarticles/dm-1008kongzh/index.html

 

我们知道DB2表普通数据和LONG/LOB数据是分开存放的,普通数据只存放有LONG/LOB的数据指针和长度,而且在处理LOB数据都是按记录逐条解析,所以REORG时按记录逐条解析就会变得很慢。(如果需要转换分开存放的 LOB 到内联的 LOB 就要使用这个参数;当表特别大时,LOB 的重组耗费的时间会较长)

 

3.       去掉longlobdata, 再次REORG

REORG的时间由原来的6个小时下降到10分钟,系统吞吐量也恢复到理想状态。

 

 

总结:

这里列举一下数据库出现问题时的初步解决思路——

1.       查看DB2的诊断日志(db2diag.log)DB2的管理通知日志(db2inst1.nfy),看是否有报错,如果有报错信息,可根据对应的报错信息了解目前可分析的问题方向。

2.       如果数据库有报错,根据报错信息对可造成此问题的原因做出假设;如果数据库没有报错,则结合系统各项指标分析可能的原因。

3.       对做出的假设做一步步推论,论证所有可能性,并从中找出根本的原因。


相关内容

热门资讯

差一点,世界又上演一场交叉战争 真就差那么一点,世界又上演一场凶险的交叉战争。之所以说是“交叉”,是因为本来两场孤立的战争,突然勾连...
中国规范出入境政策,西方在“担... 导读:近年来,越来越多的外国友人通过实地走访、亲身体验,看到了一个与西方媒体长期抹黑所塑造的形象截然...
3名儿童遭乌袭击身亡,俄痛批北... 据凤凰卫视报道,俄罗斯外交部发言人扎哈罗娃8月3日就乌克兰军队袭击克拉斯诺达尔边疆区一事表示,北约国...
印度大量驳回对华反倾销调查建议 【环球时报报道 记者 倪浩】印度正不断调整政策走向,释放出改善对华经贸关系的信号。《印度教徒报》8月...
原创 美... 文|追梦人 前言 7月31日,《国务院关于出境入境管理的规定》正式公布。 一条看似专业的内容很快引发...
泽连斯基签署总统令,解除多名乌... △斯特凡尼希娜(资料图)当地时间8月3日,乌克兰总统泽连斯基签署总统令,解除了乌克兰驻美国大使斯特凡...
10级美颜证件照火出圈的精神科... 极目新闻记者 王鹏近日,山西医科大学第一医院精神科医生郎小娥的证件照,因美颜效果突出火爆出圈,引发热...
全美25州提起诉讼,反对美政府... △美国白宫(资料图)央视记者当地时间8月3日获悉,法庭文件显示,美国有25个州提起诉讼,反对美政府最...
小米澎程72小时一线预售快报出... 来源:CNMO科技 【CNMO科技消息】8月3日,CNMO科技注意到,车fans创始人@孙少军发布了...
海评面:“中国商业航天正以惊人... 7月22日,引力一号遥四运载火箭在上海东部海域点火升空。(图/新华社) “中国商业航天领域正以惊人的...