runstats命令参数

1.runstats的语法:
runstats on table [模式名].[表名] with distribution and detailed indexes all
注意:你可以在所有列上,或者仅仅在某些列或列组(除了LONG和LOB列)上执行RUNSTATS。如果没有指定特定列的子句,系统则会使用默认的ON ALL COLUMNS子句。
使用RUNSTATS WITH DISTRIBUTION
当您已确定表中包含不是统一分布的数据时,可以运行包含WITH DISTRIBUTION子句的RUNSTATS。目录统计信息表通常包含关于表中最高和最低值的信息,而优化器假定数据值是在两个端点值之间均匀分布的。然而,如果数据值彼此之间差异较大,或者群集在某些点上,或者是碰到许多重复的数据值,那么优化器就无法选择一个最佳的访问路径,除非收集了分布统计信息。使用WITH DISTRIBUTION子句还可以帮助查询处理没有参数标志符(parameter marker)或主机变量的谓词,因为优化器仍然不知道运行时的值是有许多行,还是只有少数行。
如果为单一索引进行runstats,可以使用:
runstats on table [模式名].[表名] for indexes [索引名]
2.runstats的作用:
一个SQL在写完并运行之后,其实我们只是告诉了DB2去做什么,而不是如何去做。而具体的如何去做,就取决于优化器。优化器为了生成最优的执行计划,就得掌握当前的系统信息,目录中的统计信息等等。
runstats命令就是用来收集数据库对象的状态信息,这对优化器生成最优的执行计划至关重要。
3.什么时候需要runstats:
·在给表创建一个index后,我们最好做一次runstat,否则可能index没有生效。不过有说法称在8.2版本以后的DB2中,会在INDEX之后自动进行runstats;
·.在对table做了一次reorg后,记得要做一次runstats。因为对表做reorg,会修改表的很多信息,比如高水位等,所以做一次runstats,可以更新统计信息。 
·当表里数据发生了比较大的变化,一般来说,大约表里面的数据量的10%-20%发生了变化,就应该作一次runstats。这些变化包括删除,修改,插入。对于一些非常大的表,比方在数据仓库的项目里面,某些事实表非常巨大。这个时候,完整的对一个大表作runstats可能花费时间相当大,DB2 8.1里面支持我们对这些大表作抽样,比方说只对20%的数据作runstats,这样的话,一般来说也能保证得到正确的执行计划。当然首先要确保这个表里面的数据最好分布比较均匀。 
·.当你在分区(DPF)数据库里面使用了REDISTRIBUTE DATABASE PARTITION GROUP这个命令,那么就需要用runstats来收集新的统计信息。
4.其他
当表比较小的时候,runstats是一件很普通的事情。但是当表非常大的时候,runstats将会占用相当大的时间,cpu和内存。通常只在关键查询的速度开始减慢时,管理员才会对RUNSTATS给予适当的注意。您可以通过制定高效、有效收集统计信息的策略,避免未经思考就调优查询和执行RUNSTATS。

配置AUTO_RUNSTATS
1.配置参数
首先确保DBM参数HEALTH_MON是ON,
然后使用如下命令打开AUTO_RUNSTATS 的开关。
db2 update db cfg using AUTO_MAINT ON AUTO_TBL_MAINT ON AUTO_RUNSTATS ON
2.设置需要自动RUNSTATS的表的profile,该profile会纪录于系统表sysibm.systables的STATISTICS_PROFILE列
例如:
db2 runstats on table huangdk.hasales and indexes all tablesample system(20) set profile only                                             
3.AUTO_RUNSTATS触发条件
配置完后,需要重起一下实例,然后系统会在第一次连接请求时,去触发AUTO_RUNSTATS,如果表需要RUNSTATS,就开始RUNSTATS。
以后,系统每隔3小时触发AUTO_RUNSTATS
用户可以使用以下语句检查:
db2 select STATS_TIME,SUBSTR(STATISTICS_PROFILE,1,200) from sysibm.systables
其中,STATS_TIME列指示最后一次RUNSTATS的时间。
另外,db2diag.log里有这样的信息:
2004-10-27-16.08.39.007000+480 I30117H327         LEVEL: Event
PID     : 2596                 TID : 3404        PROC : db2fmp.exe
INSTANCE: DB2                  NODE : 000
FUNCTION: DB2 UDB, Automatic Table Maintenance, db2HmonEvalStats, probe:100
START   : Automatic Runstats: evaluation has started on database TBCSAMPL
指示自动RUNSTATS已经运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值