DB2中更新执行方案的几个罕见的要领-1

 
和Oracle数据库一样,DB2数据库内中也是经过议定优化器来分析你的SQL,天生它认为最优的执行方案(Access Plan)。DB2的优化器理论上是一个标准礼貌集合,一样往常来说我们只需陈说DB2要检索什么,而不是若何检索。
 
那么DB2的优化器是按照什么来坚决SQL的最优存取路子呢?
 
DB2的优化器是基于成本的优化器,也便是CBO(Cost Based Optmizer)。也便是说DB2 优化器会运用盘查成本公式,该公式对每条大约的存取路子的四个要素举办评价和衡量:CPU 成本、I/O 成本、DB2 琐详目次中的统计信息和理论的 SQL 语句。
 
那么我们来简单看一下DB2的优化器的任务流程:
 
1. DB2的优化器,在接纳到SQL语句后,会起首校验SQL的语法,确保是切确的SQL;
 
2. 按照以后的琐细状况信息,天生最优的执行方案来优化SQL语句;
 
3. 把SQL翻译成谋略机指令言语,并执行这个优化后的SQL;
 
4. 前去了局,大约存储它们,以便未来的执行。
 
在我们看来,DB2 琐详目次中统计信息是让DB2优化器切确任务的一个十分首要的按照。这些统计信息向优化器供给了与正在被优化的 SQL 语句将要访谒的表外形相干的信息。这些信息首要包含:
 
Table--包含表的记录数、PAGE、PCTFREE以及COMPRESS等信息,相干的琐细视图是:sysstat.tables、syscat.tables。
 
Columns—包含COLUMNS的数目、长度、漫衍特征以及COMPRESS等信息,相干的琐细视图是:sysstat.columns、syscat. columns。
 
Index--包含能否存在索引、索引的构造(叶子页的数目和级其他数目)、索引键的会议值的数目以及能否群集索引, 相干的琐细视图是:sysstat.indexes、syscat. indexes。
 
其他的还有分区/节点组信息和表空间的信息,若何及时更新这些信息呢?包管DB2优化器切确的任务,在DB2内中供给了以下的门径。
 
RUNSTATS与REOGCHK
 
Runstats这个命令的服从首要便是汇集数据库工具的外形信息,这对数据库运用合理的ACCESS PLAN是至关首要的。一样往常来说,以下几种情形上面,我们需求用runstats来汇集统计信息:
 
1. 在给表建立一个index后,我们最好做一次runstat。这个情形也是大各人屡屡忽略的。很多功夫大各人在给表增长了一个index后,分析执行方案,创作发明没有改变,认为很希罕。其实这个功夫,你需求做一次runstats,就可以了。在8.2内中,DB2做了很好的改造,可以戒备这个问题成绩,在建立index的功夫,可以当即更新你的信息。
 
2. 在对table做了一次reorg后,记得要做一次runstats。因为对表做reorg,会点窜表的很多信息,歧高水位等,以是做一次runstats,可以更新统计信息。
 
3. 当你的表内中的数据发作了对照大大的改变,一样往常来说,大大约表内中的数据量的10%-20%发作了改变,就应该作一次runstats。这些改变包含删除,点窜,拔出。关于一些十分大大的表,歧在数据堆栈的项目内中,某些事实表十分弘大大。这个功夫,完备的对一个大大表作runstats大约花费功夫相等大,DB2 8.1内中撑持我们对这些大大表作抽样,歧说只对20%的数据作runstats,如许的话,一样往常来说也能包管得到切确的执行方案。当然起首要确保这个表内中的数据最好漫衍对照匀称。
 
 
来自: 新客网(www.xker.com) 详文参考:http://www.xker.com/page/e2008/0128/46625.html


版权声明: 原创作品,准许转载,转载时请务必以超链接情势标明文章 原始来由 、作者信息和本声明。不然将究查法令责任。

posted @ 2011-03-07 18:12  蓝色的天空III  阅读(243)  评论(0编辑  收藏  举报