DB2数据库管理最佳实践笔记-10日常运维

DB2数据库管理最佳实践笔记-10日常运维

ID:38979605

大小:51.51 KB

页数:9页

时间:2019-06-22

DB2数据库管理最佳实践笔记-10日常运维_第1页
DB2数据库管理最佳实践笔记-10日常运维_第2页
DB2数据库管理最佳实践笔记-10日常运维_第3页
DB2数据库管理最佳实践笔记-10日常运维_第4页
DB2数据库管理最佳实践笔记-10日常运维_第5页
资源描述:

《DB2数据库管理最佳实践笔记-10日常运维》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、10.1日常运维工具概述Runstats是runstatistics的缩写,意思是收集统计信息,目的是为DB2优化器提供最佳路径选择;Reorg是重组的意思,目的是减少表和索引在物理存储上的碎片,提供性能;Reorgchk是重组前的检查Rebind是对一些包、存储过程或静态程序进行重新绑定。几个工具的执行流程:首先通过Runstats收集表和索引的统计信息,然后执行Reorg重组,如果有必要则执行,然后再次收集统计信息。最后,对于静态语句、存储过程等,执行Rebind绑定。10.2Runstats在系统运行一个查询的时候,优化器需要决定用某种方式来访问数据。只有当DB2

2、对表中的数据有一个大概的了解,才能知道每一步操作大约需要处理多少数据,返回多少行。当优化器了解了这些信息后,就会根据一系列的运算,判定出各种访问途径所需要消耗的资源,然后从中选择一个消耗资源最少的方法。最普通的Runstats就是统计表和索引中有多少行数据,有多少不同的数值。Runstats命令使用DISTRIBUTION参数手机数据分布。数据分布分为两种,一种叫做频率采样(Frequency),一种叫做百分比采样(Quantile)。当收集数据分布时,两种采样方式都会被收集。其中频率采样是手机表中拥有相同数量最多的几行,比如10000行数据中9000行为10,然后50

3、0行为9,然后100行为8,剩下的部分平均分布。如果我们制定Frequency为3的话,那么系统就会记录下来有9000行10,500行9,然后100行8,剩下的部分在估算时则假定平均分布。而百分比采样则是将整个10000行数据分成相等大小的若干段,然后记录每一段的段首和段尾的数值,当需要查询一个数据段时(比如C1>10ANDC1<15),就可以根据每一个数据段的启始数值加上段落的大小,估算出符合查询条件的记录数量。理论上,数据分布收集的越细致越好。但是经过细致的数据分布信息可能会导致DB2在优化SQL时需要处理更多的信息,并占用更多的系统存储空间,可能会导致性能的下降。

4、因此,一般情况下我们建议使用默认的数据分布采样设置,也就是频率采样为10,百分比采样为20。但是,有些情况下,则需要根据实际情况调整分布参数。Runstats的语法比较复杂,在实际应用中,最常用的几种使用方法如下:1)为表和索引收集统计信息,包括数据分布,代码如下:RUNSTATSONTABLE<表模式>.<表名>ONALLCOLUMNSWITHDISTRIBUTIONANDDETAILEDINDEXESALL2)收集索引统计信息,如果表上没有统计信息,该选项会同时对表做统计。但该选项并不会收集数据分布信息,代码如下:RUNSTATSONTABLE<表模式>.<表名>F

5、ORINDEXESALL3)使用伯努利算法抽样统计。DB2会扫描每一行数据,但只对一定比例的抽样数据进行统计。这种方法一般用于数据仓库中的大表。如果收集全表数据统计,将需要很长时间,并占用CPU资源,应用性能会造成影响。下列采用了伯努利10%抽样统计,代码如下:runstatsontable<表模式>.<表名>tablesamplebernoulli(10)如何查看一个表是否收集了统计信息?一个比较有效的办法是查看syscat.tables的stats_time字段,如果该字段值为空,则表示没有收集过统计信息,否则会显示统计信息的时间:db2"selectchar(ta

6、bname,20)astabname,stats_timeformsyscat.tableswhereSTATS_TIMEisNULL"DB2runstats命令只能针对单表执行,而无法对整个数据库做运行时统计(虽然可以使用reorgchkupdatestatistics对所有表收集统计信息,但reorgchk并不会收集分布统计)。可考虑将需要执行runstats的表写入一个脚本,以下是一个脚本范例:#!/bin/kshif["$#"<3];thenecho"USAGE:$0DB_NAMEDB_USER_NAMEDB_PASSWORD"exitfiDB=$1DB_USE

7、R=$2DB_PWD=$3db2connectto$DBuser$DB_USERusing$DB_PWDdb2"selectrtrim('RUNSTATSONTABLE'

8、

9、rtrim(tabschema)

10、

11、'.'

12、

13、tabname

14、

15、'ONALLCOLUMNSWITHDISTRIBUTIONONALLCOLUMNSANDSAMPLEDDETAILEDINDEXESALLALLOWWRITEACCESS;')fromsyscat.tableswheretype='T'">createRunstats.txtgrepRUNSTATScre

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。