生产数据库的性能调优是一个系统的工程,它不仅要求DBA熟悉db2的工作原理和各种性能指标,还要求DBA也要熟悉操作系统、存储等其他知识,甚至要求DBA熟悉应用的设计原理以及它使用数据库的方式等。这里,我们只就生产数据库性能优化之reorg和表重建进行初步的探讨。
1. reorg的作用
要进行高效率的数据访问和获得最佳工作负载性能,具有组织良好的表数据是很关键的。在对表数据进行许多更改之后,逻辑上连续的数据可能会位于不连续的物理数据页上,比如说对某个表新增一个字段,或者表的某列是可变长度的,这样在插入或者更新操作时有可能会导致行溢出。另外,在删除大量行后,也会造成表空间的数据碎片。这些情况下都会降低数据的访问速度,从而影响到数据库的性能。
表重组操作会整理数据碎片,降低表空间高水位,减少浪费的空间,并对行进行重新排序以合并溢出记录,从而加快数据访问速度并最终提高查询性能。还可以指定根据特定索引来重新排序数据,以便查询通过最少次数据读取操作就可以访问数据。既可重组系统目录表,也可以重组数据库表。
考虑以下因素,以确定是否应重组表:
· 对查询所访问的表进行了大量的插入、更新和删除活动
· 对于使用具有高集群率的索引的查询,其性能发生了明显变化
· 在执行 RUNSTATS以刷新统计信息后,性能没有得到改善
· REORGCHK 命令指示需要重组表
· 综合考虑查询性能不断降低所浪费的成本和重组表所需的成本(包括 CPU时间、经过的时间和REORG实用程序在完成重组操作之前锁定表造成的并行性降低),以确定是否进行表重组。
2. 生产数据库要不要做reorg
DB2提供了在线或离线执行reorg的选项。默认情况下,离线 REORG 允许其他用户读这个表,ALLOW READ ACCESS 是默认选项。可以通过指定 ALLOW NO ACCESS 选项来限制对表的访问。在线 REORG (也称inplace REORG)支持对表的读或写访问,ALLOW WRITE ACCESS 是默认选项。联机重组与脱机重组的比较
特征脱机重组联机重组
性能快慢
完成时数据的集群因子良好非最佳集群
并行性(对表的访问)ALLOW NO ACCESS
ALLOW READ ACCESS(默认)ALLOW RE