如何在DB2里面更新执行计划
日期:2007年10月26日 作者: 查看:[大字体 中字体 小字体]-
和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,这样的话,一般来说也能保证得到正确的执行计划。当然首先要确保这个表里面的数据最好分布比较均匀。
4. 当你在分区(DPF)数据库里面使用了REDISTRIBUTE DATABASE PARTITION GROUP这个命令,那么就需要用runstats来收集新的统计信息。
RUNSTATS命令的语法如下:
如果表名为DB2INST1.STAFF,表上有索引,则可以用下面的例子完成RUNSTATS命令:
- [1] [2] [3] 下一页
-
- 如何在DB2里面更新执行计划 相关文章:
- ·高度优雅与魅力 Chanel时装设计
- ·Illustrator传统风格名片设计实例
- ·平安夜美丽蜡烛的装置设计欣赏
- ·圣诞节日花环花束设计欣赏
- ·创意设计:多姿多彩的自然标本玻璃砖
- ·3DSMAX造型设计之打造江南丝绸
- ·非主流 中性性感MM装扮设计欣赏
- ·3DSMAX造型设计之书法印刷效果
- ·德国女装verse设计欣赏
- ·Vista下如何通过蓝牙手机控制计算机
- 如何在DB2里面更新执行计划 相关软件
- ·巧施拖兵计
- ·间谍抓捕计划
- ·《异种克隆计划》游戏试玩
- ·新《企业会计准则》
- ·《死神计时游戏》
- ·中国街头骗术36计大全
- ·家庭装修设计完全手册(精简版)
- ·《惊魂六计丛书》
- ·《隐密计划》
- ·园林别墅设计效果图
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
精品推荐
热点TOP10
- ·Transact-SQL语句总汇
- ·无限级分类的非递归实现(存储过程版)
- ·什么是SQL注入法攻击
- ·列出SQL SERVER 所有表,字段名,主键,类型,长度,小数位数等信息
- ·SQL存储过程的概念,创建,调用,管理,删除,优点
- ·学习SQL语句之SQL语句大全
- ·客户端回调实现gridView无刷新分页
- ·关于SQL语句的优化方式
- ·精妙SQL语句收集
- ·2台服务器数据库如何同步?
- ·Delphi程序执行时实时生成报表
- ·ADO连接数据库字符串大全
- ·VB.NET的数据库基础编程(1)
- ·解决SQL Server常见的七个经典问题
- ·SQL数据库高级教程:学习 SQL 函数
- ·SQL数据库高级教程:学习 SQL IN
- ·如何实现将vsflexgrid中修改的数据反馈到数据库中
- ·直接粘贴剪贴版的位图数据到Image控件
- ·SQL注入的不常见方法
- ·查询及删除重复记录的方法
特别推荐
- ·学习SQL语句之SQL语句大全
- ·数据备份失败的五个原因及解决办法
- ·解决SQL Server常见的七个经典问题
- ·SQL存储过程的概念,创建,调用,管理,删除,优点
- ·带你轻松接触13个数据库术语
- ·如何恢复系统数据库如何恢复系统数据库?
- ·通过实例讲解由浅入深学会存储过程
- ·学会三个范式快速成为数据库设计的高手
- ·SQL数据库应聘人员面试时经常被问的问题
- ·问答:查询分析器不能单步调试的的原因
- ·数据库基础知识:SQL中的IIF语句详解
- ·WindowsXP+IIS+PHP5+MySQL5+Zend+GD库+phpMyAdmin+PHPWind 5.3 安装教程
- ·你知道吗?优化数据库前的十大问题
- ·自动备份注意事项让你远离误删数据噩梦
- ·关于MSSQL数据库日志满的快速解决办法
- ·SQL安全设置攻略
- ·SQL注入的不常见方法
- ·关于SQL语句的优化方式
- ·SQL优化34条
- ·查询及删除重复记录的方法
