事业单位

重组索引的方法和问题

在数据库里发现有要重组的索引,但是不确定那种方法是正确的,请大家告诉我那种方法是正确的重组索引的方法。
reorgchk报告如下:
Table: DB2INST1.TEST
Index: DB2INST1.ID_INDEX
                              24369    70     0    2     0      80           20            20                392                 392
  78  90   -   0   0 *----

方法1:
db2 runstats  on table  db2inst1.test  with distribution and detailed indexes all  ;
db2 reorg indexes all for table  db2inst1.test ;
db2 runstats  on table  db2inst1.test  with distribution and detailed indexes all  ;
db2 reorgchk  current statistics  on table db2inst1.test ;
结果:
Table: DB2INST1.TEST
Index: DB2INST1.ID_INDEX
                              24369    70     0    2     0      80           20            20                392                 392
  78  90   -   0   0 *----
星号没有去掉,为什么呢?
方法2:
db2 runstats  on table  db2inst1.test  with distribution and detailed indexes all  ;
reorg  table  db2inst1.test  index  db2inst1.id_index ;  #依据索引db2inst1.id_index来重组表db2inst1.test

db2 runstats  on table  db2inst1.test  with distribution and detailed indexes all  ;
db2 reorgchk  current statistics  on table db2inst1.test ;
结果:
Table: DB2INST1.TEST
Index: DB2INST1.ID_INDEX
                              24369    70     0    2     0      80           20            20                392                 392
  78  90   -   0   0 -----

星号去掉了,为什么以重组表的方式(依据索引db2inst1.id_index来重组表db2inst1.test),最后却成功去除了星号。相反,“db2 reorg indexes all for table  db2inst1.test ;”却无法去掉F4上的星号呢?


望各位达人帮助啊。
当F4 F5 F6 F7 F8上有星号需要重组索引时,我们到底怎么去做重组才是正确的?方法1和方法2谁对谁错?以reorg indexes的方式经常无法去除F4 F5 F6 F7 F8上的星号。
参与3

2 同行回答

wencycool wencycool 数据库管理员 山东
1首先你要检查一下需要重组的表信息一般都是按照schema来检查db2 reorgchk on schema 看一下表统计结果f1,f2,f3列,如果有标记为*的则需要进行表重组;再看一下索引统计结果f4-f8 ,如果有标记为*的则需要对索引进行重组也可以按照表信息来检查,具体看一下帮助 db2 ? reorgchk2...显示全部
1首先你要检查一下需要重组的表信息一般都是按照schema来检查
db2 reorgchk on schema
看一下表统计结果f1,f2,f3列,如果有标记为*的则需要进行表重组;
再看一下索引统计结果f4-f8 ,如果有标记为*的则需要对索引进行重组
也可以按照表信息来检查,具体看一下帮助 db2 ? reorgchk
2重组表分为离线重组和在线重组,看你业务了。离线重组的时候最多只能读表信息,也就是会影响业务(不影响查询)离线重组执行快,日志产生小;在线重组不影响业务,占用资源也少,但会记录大量日志速度也会慢,还有就是索引只能离线重组方式才会重建否则只能维护索引。如果要求事务较高,建议在线重组(在业务低峰期)
在线表重组
db2 reorg table . inplace allow write access
单独对索引重组
db2 reorg indexes all for table .
-----------------------------------------------------------------------------------------
用db2pd -d -reorg或者db2 list history reorg all for 进行查看重组情况
具体参考:db2 ? reorgchk          db2 ? reorg       db2 ? list       db2 pd -h 收起
互联网服务 · 2012-10-10
浏览524
ljbupc ljbupc 软件开发工程师 上海安硕科技
F4: CLUSTERRATIO 或正常化的 CLUSTERFACTOR > 80F5: 100 * (叶子页的已用空间/非空叶子页的可用空间) > MIN(50, (100 - PCTFREE))F6: (100 - PCTFREE) * (在一个较小层索引中的可用空间数量/所有键所需的空间数量) < 100F7: 100 * (伪删除的 RID 数/RID 总数) < 20F8: ...显示全部
F4: CLUSTERRATIO 或正常化的 CLUSTERFACTOR > 80
F5: 100 * (叶子页的已用空间/非空叶子页的可用空间) > MIN(50, (100 - PCTFREE))
F6: (100 - PCTFREE) * (在一个较小层索引中的可用空间数量/所有键所需的空间数量) < 100
F7: 100 * (伪删除的 RID 数/RID 总数) < 20
F8: 100 * (伪空叶子页数/叶子页总数) < 20

一般需要先对表reorg再对索引reorg。F4是数据的顺序和索引顺序的关系,你第二种方式对表按索引reorg了。
不大可能把所有*号都去掉,只要把最常用的索引*号去掉就可以来。 收起
互联网服务 · 2012-10-10
浏览575

提问者

qingmugusong
信息技术经理 cbrc
评论231

问题状态

  • 发布时间:2012-10-10
  • 关注会员:1 人
  • 问题浏览:9826
  • 最近回答:2012-10-10
  • X社区推广