Chinaunix首页 | 论坛 | 博客
  • 博客访问: 85733895
  • 博文数量: 19285
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196072
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19285)

文章存档

2012年(1)

2011年(1)

2009年(125)

2008年(19095)

2007年(63)

分类: DB2/Informix

2008-05-31 18:26:50

增强的统计信息维护

什么是 UPDATE STATISTICS?

要制定优秀的查询计划,优化器需要获得有关索引和数据分布的信息。当创建新的表或索引时,systemtable 没有提供可用的分布信息。要获得这些信息,必须运行 UPDATE STATISTICSUPDATE STATISTICS 创建并更新分布信息,并使用优化查询所需的信息更新系统编目表。它还重新优化存储过程,并在升级服务器时对索引进行转换。

UPDATE STATISTICS 的使用范围

您可以针对整个数据库、单个表、单个列或一个过程运行 UPDATE STATISTICS

UPDATE STATISTICS 有三种运行模式:

  • LOW
  • MEDIUM
  • HIGH

UPDATE STATISTICS LOW

UPDATE STATISTICS LOW 创建查询优化所需的最少信息。它将更新 systable 中的表、行和页面数信息,以及 sysindex 和 syscolumn 中的索引和列信息。并不创建分布信息。如果已经存在分布信息,则这些信息不会被重写。要删除现有的分布信息,可使用 DROP DISTRIBUTIONS

UPDATE STATISTICS MEDIUM

UPDATE STATISTICS MEDIUM 创建与 low 模式相同的信息,以及一些保存在系统编目的 sysdistrib 表中的分布消息。分布信息的计算通过对一定比例的数据行进行取样完成。

UPDATE STATISTICS HIGH

UPDATE STATISTICS HIGH 除创建与 low 模式相同的信息外,还将计算 sysdistrib 每行中保存的分布消息。因此,high 模式计算出的分布信息非常准确。因而其执行速度也远远慢于 low 或 medium 模式。

RESOLUTION 的作用是什么?

关键字 RESOLUTION 能够使您调整分布 bin 的大小。在 medium 模式中,您还可以使用 RESOLUTION 指定更低的抽样大小界限并调整置信度。

什么是 DISTRIBUTIONS ONLY?

使用关键字 DISTRIBUTIONS ONLY,您可以避免计算索引信息。而只计算分布信息,这将加快执行 UPDATE STATISTICS 语句的速度。

什么是 SAMPLING SIZE?

关键字 SAMPLING SIZE 是 Version 11 中的新特性,使您能够在 UPDATE STATISTICS MEDIUM 中配置抽样大小。SAMPLING SIZE 的值保存在 sysdistrib.smlsize 中。进行抽样的实际行数保存在 sysdistrib.rowssmpld 列中。


清单 12. SAMPLING SIZE 示例
                    
UPDATE STATISTICS MEDIUM FOR TABLE customer SAMPLING SIZE 


表 3. 抽样大小的值和说明
抽样值 说明
number <= 1 表示抽样行数所占的百分比。也就是说,0.6 表示对 60% 的行进行抽样来计算分布消息。
number > 1 表示将进行抽样的行的绝对数量。也就是说,数字 10 表示将对表中的 10 行数据进行抽样来计算分布信息。






Version 11 中的新变化

从 Version 11 开始,CREATE INDEX 可以自动调用 UPDATE STATISTICS。这样做的好处是,预先为优化器提供所需的分布信息。在 Version 11 之前,要为优化器创建所需的信息,必须在每次创建新索引之后调用 UPDATE STATISTICS

对于临时表,不需要使用 UPDATE STATISTICS LOW。每次访问临时表时,将自动更新数据字典中的条目。和普通表一样,在为临时表创建索引时将自动生成统计信息。

使用 SET EXPLAIN 显示查询计划

使用 SET EXPLAIN 选项可以显示优化器的查询计划,以及预计返回的行数量和查询的相对成本。

SET EXPLAIN ON 将启用这个特性并将查询计划写入到名为 sqexplain.out 的文件中。从 Version 11 开始,您将能够指定应该将输出写入到哪个文件中。您可以使用关键字 FILE TO 设定文件的导向。


清单 13. SET EXPLAIN ON 和 FILE TO 示例
                    
SET EXPLAIN ON ;
SET EXPLAIN FILE TO  ;
				

使用 AVOID EXECUTE 关键字,您无需执行查询便可计算查询计划,从而节省时间。


清单 14. AVOID EXECUTE 示例
                    
SET EXPLAIN ON AVOID EXECUTE;

SET EXPLAIN OFF 为默认设置,用来关闭这个特性。

阅读(2262) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~