使用REORG TABLE命令优化数据库的性能 (1)

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

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




由于DB2使用CBO作为数据库的优化器,数据库对象的状态信息对数据库使用合理的ACCESS PLAN至关重要。


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

RUNSTATS -> REORGCHK -> REORG -> RUNSTATS -> BIND或REBIND


0 执行下面命令前要先连接数据库


1 RUNSTATS

由于在第二步中REORGCHK时可以对指定的表进行RUNSTATS操作(在REORGCHK时指定UPDATE STATISTICS),所以第一步事实上是可以省略的。


2 REORGCHK

REORGCHK命令的语法如下:

>>-REORGCHK----+----------------------------+------------------->

| .-UPDATE--. |

'--+-CURRENT-+---STATISTICS--'


>-----+---------------------------+----------------------------><

| .-USER-------. |

'-ON TABLE--+-SYSTEM-----+--'

+-ALL--------+

'-table-name-'


REORGCHK是根据统计公式计算表是否需要重整。

对于每个表有3个统计公式,对索引有3个统计公式(版本8开始有5个公式),如果公式计算结果该表需重整,在输出的REORG字段中相应值为*,否则为-。


如果数据库中数据量比较大,在生产系统上要考虑REORGCHK的执行时间可能较长,需安排在非交易时间执行。


可以分为对系统表和用户表两部分分别进行REORGCHK:


1) 针对系统表进行REORGCHK

db2 reorgchk update statistics on table system

使用UPDATE STATISTICS参数指定数据库首先执行RUNSTATS命令。


2) 针对用户表进行REORGCHK

db2 reorgchk update statistics on table user


下面是执行的部分结果

db2 reorgchk update statistics on table user

执行 RUNSTATS ....



表统计信息:


F1: 100 * OVERFLOW / CARD < 5

F2: 100 * (Effective Space Utilization of Data Pages) > 70

F3: 100 * (Required Pages / Total Pages) > 80


SCHEMA NAME CARD OV NP FP ACTBLK TSIZE F1 F2 F3 REORG

----------------------------------------------------------------------------------------

DB2INST1 STAFF - - - - - - - - -*-

...


索引统计信息:


F4: CLUSTERRATIO 或正常化的 CLUSTERFACTOR > 80

F5: 100 * (KEYS * (ISIZE + 9) + (CARD - KEYS) * 5) / ((NLEAF - NUM EMPTY LEAFS) * INDEXPAGESIZE) > 50

F6: (100 - PCTFREE) * ((INDEXPAGESIZE - 96) / (ISIZE + 12)) ** (NLEVELS - 2) * (INDEXPAGESIZE - 96) / (KEYS * (ISIZE + 9) + (CARD - KEYS) * 5) < 100

F7: 100 * (NUMRIDS DELETED / (NUMRIDS DELETED + CARD)) < 20

F8: 100 * (NUM EMPTY LEAFS / NLEAF) < 20


SCHEMA NAME CARD LEAF ELEAF LVLS ISIZE NDEL KEYS F4 F5 F6 F7 F8 REORG

-------------------------------------------------------------------------------------------------

表:DB2INST1.STAFF

DB2INST1 ISTAFF - - - - - - - - - - - - -----

...


从上面的例子来看,对于表DB2INST1.STAFF,根据统计公式F2计算结果,有必要对表进行REORG。
参与0

0同行回答

“答”则兼济天下,请您为题主分忧!

提问者

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2008-09-02
  • 关注会员:0 人
  • 问题浏览:2865
  • X社区推广