10.1
日常运维工具概述
Runstats
是
run statistics
的缩写,意思是收集统计信息,目的是为
DB2
优化器提供最佳路径
选择;
Reorg
是重组的意思,目的是减少表和索引在物理存储上的碎片,提供性能;
Reorgchk
是重组前的检查
Rebind
是对一些包、存储过程或静态程序进行重新绑定。
几个工具的执行流程:
首先通过
Runstats
收集表和索引的统计信息,然后执行
Reorg
重组,如果有必要则执行,然
后再次收集统计信息。最后,对于静态语句、存储过程等,执行
Rebind
绑定。
10.2 Runstats
在系统运行一个查询的时候,优化器需要决定用某种方式来访问数据。只有当
DB2
对表中
的数据有一个大概的了解,
才能知道每一步操作大约需要处理多少数据,
返回多少行。
当优
化器了解了这些信息后,就会根据一系列的运算,判定出各种访问途径所需要消耗的资源,
然后从中选择一个消耗资源最少的方法。
最普通的
Runstats
就是统计表和索引中有多少行数据,有多少不同的数值。
Runstats
命令使用
DISTRIBUTION
参数手机数据分布。数据分布分为两种,一种叫做频率
采样(
Frequency
)
,
一种叫做百分比采样(
Quantile
)
。当收集数据分布时,两种采样方式都
会被收集。其中频率采样是手机表中拥有相同数量最多的几行,比如
10000
行数据中
9000
行为
10
,
然后
500
行为
9
,
然后
100
行为
8
,
剩下的部分平均分布。
如果我们制定
Frequency
为
3
的话,那么系统就会记录下来有
9000
行
10,500
行
9
,然后
100
行
8
,剩下的部分在估
算时则假定平均分布。
而百分比采样则是将整个
10000
行数据分成相等大小的若干段,
然后
记录每一段的段首和段尾的数值,当需要查询一个数据段时(比如
C1>10 AND C1<15
)
,
就
可以根据每一个数据段的启始数值加上段落的大小,估算出符合查询条件的记录数量。
理论上,数据分布收集的越细致越好。但是经过细致的数据分布信息可能会导致
DB2
在优
化
SQL
时需要处理更多的信息,并占用更多的系统存储空间,可能会导致性能的下降。因
此,一般情况下我们建议使用默认的数据分布采样设置,也就是频率采样为
10
,百分比采
样为
20
。但是,有些情况下,则需要根据实际情况调整分布参数。
Runstats
的语法比较复杂,在实际应用中,最常用的几种使用方法如下:
1
)
为表和索引收集统计信息,包括数据分布,
代码如下:
RUNSTATS ON TABLE <
表模式
>.<
表名
> ON ALL COLUMNS WITH DISTRIBUTION AND
DETAILED INDEXES ALL