WEB开发网
开发学院数据库DB2 讲解一个标准规则的集合──DB2优化器 阅读

讲解一个标准规则的集合──DB2优化器

 2008-09-03 16:28:34 来源:WEB开发网   
核心提示: 在实际的项目里面,对于变化比较大的表,讲解一个标准规则的集合──DB2优化器(3),需要我们定时对数据库做runstats,一般来说runstats和reorg可以结合起来做,所以效率非常好,笔者曾经在RS6000平台上面实现50-60m/s的速度Load数据,首先对表作reorg,然后做

在实际的项目里面,对于变化比较大的表,需要我们定时对数据库做runstats,一般来说runstats和reorg可以结合起来做,首先对表作reorg,然后做runstats,最后REBIND数据库根据最新的统计信息生成合适的统计计划。

值得注意的是,如果我们要处理的表数据量是快速变化的,比如在电信移动行业,需要在月末进行处理的汇总表。在不长的时间范围内数据量变化特别大,从而使得RUNSTATS 得到的统计信息不准确,原因是这些统计信息只是某个时间点的信息。您可以用这条语句来把表修改为volatile。

altertabletable_namevolatilecardinality

这样优化器将考虑使用索引扫描而不是表扫描。无论统计信息如何,优化器将使用索引扫描而不是使用表扫描。

IBM的文档里面还提供了REORGCHK这个命令,可以根据统计公式计算表是否需要重整。

比如可以分为对系统表和用户表两部分分别进行REORGCHK:

(1)针对系统表进行REORGCHK:

db2reorgchkupdatestatisticsontablesystem

(2) 针对用户表进行REORGCHK:

db2reorgchkupdatestatisticsontableuser

需要注意的是,如果数据库中数据量比较大,这些操作一般所需时间比较长,所以尽量安排在数据库比较空闲的时候做。

db2updatedbcfgusingAUTO_MAINToffAUTO_TBL_MAINT 
offAUTO_RUNSTATSoff

在DB2 8.2里面数据库可以自动进行统计信息收集,不过这样的动作还是会带来额外的负载,一般情况下面可以关掉,只在我们需要的时候运行就可以了。

LOAD

Load这个工具是DB2里面一个非常强大的数据迁移工具。一般用作大批量的数据插入。因为Load操作不记日志,所以效率非常好。笔者曾经在RS6000平台上面实现50-60m/s的速度Load数据。在这里我想讨论的是在DB2数据库里面如何用load来影响你的catalog视图的统计信息。

上一页  1 2 3 4  下一页

Tags:讲解 一个 标准

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接