,意思是收集统计信息,目的是为DB2优化器提供最佳路径选择;是重组的意思,目的是减少表和索引在物理存储上的碎片,提供性能;chk是重组前的检查Rebind是对一些包、存储过程或静态程序进行重新绑定。几个工具的执行流程:首先通过Runstats收集表和索引的统计信息,重组,如果有必要则执行,然后再次收集统计信息。最后,对于静态语句、存储过程等,执行Rebind绑定。,优化器需要决定用某种方式来访问数据。只有当DB2对表中的数据有一个大概的了解,才能知道每一步操作大约需要处理多少数据,返回多少行。当优化器了解了这些信息后,就会根据一系列的运算,判定出各种访问途径所需要消耗的资源,然后从中选择一个消耗资源最少的方法。最普通的Runstats就是统计表和索引中有多少行数据,有多少不同的数值。Runstats命令使用DISTRIBUTION参数手机数据分布。数据分布分为两种,一种叫做频率采样(Frequency),一种叫做百分比采样(Quantile)。当收集数据分布时,两种采样方式都会被收集。其中频率采样是手机表中拥有相同数量最多的几行,比如10000行数据中9000行为10,然后500行为9,然后100行为8,剩下的部分平均分布。如果我们制定Frequency为3的话,那么系统就会记录下来有9000行10,500行9,然后100行8,剩下的部分在估算时则假定平均分布。而百分比采样则是将整个10000行数据分成相等大小的若干段,然后记录每一段的段首和段尾的数值,当需要查询一个数据段时(比如C1>10ANDC1<15),就可以根据每一个数据段的启始数值加上段落的大小,估算出符合查询条件的记录数量。理论上,数据分布收集的越细致越好。但是经过细致的数据分布信息可能会导致DB2在优化SQL时需要处理更多的信息,并占用更多的系统存储空间,可能会导致性能的下降。因此,一般情况下我们建议使用默认的数据分布采样设置,也就是频率采样为10,百分比采样为20。但是,有些情况下,则需要根据实际情况调整分布参数。Runstats的语法比较复杂,在实际应用中,最常用的几种使用方法如下:1)为表和索引收集统计信息,包括数据分布,代码如下:RUNSTATSONTABLE<表模式>.<表名>ONALLCOLUMNSWITHDISTRIBUTIONANDDETAILEDINDEXESALL2)收集索引统计信息,如果表上没有统计信息,该选项会同时对表做统计。但该选项并不会收集数据分布信息,代码如下:RUNSTATSONTABLE<表模式>.<表名>FORINDEXESALL3)使用伯努利算法抽样统计。DB2会扫描每一行数据,但只对一定比例的抽样数据进行统计。这种方法一般用于数据仓库中的大表。如果收集全表数据统计,将需要很长时间,并占用CPU资源,应用性能会造成影响。下列采用了伯努利10%抽样统计,代码如下:runstatsontable<表模式>.<表名>tablesamplebernoulli(10)如何查看一个表是否收集了统计信息?,如果该字段值为空,则表示没有收集过统计信息,否则会显示统计信息
DB2数据库管理最佳实践笔记-10日常运维 来自淘豆网m.daumloan.com转载请标明出处.