当前位置: 代码迷 >> DB2 >> DB2 关于重组的有关问题 这次有关问题有点多嘿嘿
  详细解决方案

DB2 关于重组的有关问题 这次有关问题有点多嘿嘿

热度:6812   发布时间:2013-02-26 00:00:00.0
DB2 关于重组的问题 这次问题有点多嘿嘿
我现在的遇到的问题是
test表有5个索引
我对test表进行大批量的数据添加
之后对test表进行查询
这个查询需要走这个表的2个索引分别为testindex1 ,testindex2
对表操作如下
runstats on table test and index -》reorg table db2inst1.test index all-》runstats on table test and index
查询分析器 还是没走testindex1 ,testindex2
改成
runstats on table test and index -》reorg table db2inst1.test index db2inst1.testindex1 -》runstats on table test and index
之后 就走testindex1这个一个索引了

想问下reorg table db2inst1.test index all 与 reorg table db2inst1.test index db2inst1.testindex1

着2个语句 一个是对表数据和表上所有的索引重组第二个是对表数据和索引为testindex1重组

为什么第一个语句执行完事没走testindex1 ,testindex2呢??而第二个却走了testindex1索引??如果想要走 

testindex1 ,testindex2我该怎么写??

还有就是对表重组完事必须要走runstats on table test and index这个吗??

还有一个 reorg table db2inst1.test 对表的数据重组,听别人说对表数据重组没用 不知道为什么
最后一个嘿嘿 这个命令 db2rbind 库名 -l db2rbind.out 什么意思?

求高手帮忙解答下 
小弟在此谢谢了

------解决方案--------------------------------------------------------
启用表的volatile属性,不需要runstats

Alter table 表名 volatile cardinality
------解决方案--------------------------------------------------------
reorg table db2inst1.test index all 这个语句我看着就觉得有问题,找了一个有索引的表执行了一下,果然报错,说指定的索引无效,难道楼主有一个索引的名字是all (我的版本是9.1,也许不同版本有差别,没细查)?
reorg table db2inst1.test index db2inst1.testindex1,这条语句并不会重组db2inst1.testindex1这个索引,只是表示在重组test表时,按这个索引的顺序放置行。
楼主为什么要强求必须用到两个索引呢?只要保证表和索引的统计信息准确,用不用索引让DB2决定,如果你觉得查询太慢,就应考虑索引是否设计得合理。
对表重组后,建议RUNSTATS一下,因为REORG有可能会使表的信息发生较大的改变。
对表重组,要看这个表需不需要重组,可以用REORCHK命令来判断,对一个需要重组的表REORG是非常必要的。
最后那个db2rbind命令表示重新绑定数据库中的所有包,后面的-l选项表示把命令执行中的日志保存到db2rbind.out文件中。
------解决方案--------------------------------------------------------
从数据量、更新频率上来看,此三大子系统包含的表可分为四类:
1. 大数据量的表,每天增量获取数据,并且数据量保持在一个很大的基数,这类表通常用来业务数据存储和查询;
2. 数据处理临时表,只用于数据的中间处理过程和暂存数据,处理完数据即被移走,这类表在运行时数据量大,空闲时数据量很小;
3. 小数据量表,通常记录数少于1000条,代码表、控制表等属于此类表;
4. 旧版系统数据的临时表,或者系统还未启用的表。
对于这三类表采用不同的策略:
维护策略一:第1和3类表均属于变更频度小的表,基于“数据量改变10%,运行一次重组和运行统计”的经验法则,可定义半年进行一次数据维护;
维护策略二:第2类表更频度较大,半年运行一次数据重组;又由于无法收集准确的统计信息,所以建议启用表的volatile属性(查询时尽量使用索引扫描,而不是表扫描);
维护策略三:第4类表只需要进行一次数据重组和运行统计,以后不再需要维护。
  相关解决方案