Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1102803
  • 博文数量: 276
  • 博客积分: 10077
  • 博客等级: 上将
  • 技术积分: 2513
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-24 20:31
文章分类

全部博文(276)

文章存档

2020年(1)

2015年(5)

2012年(2)

2011年(6)

2010年(7)

2009年(224)

2008年(31)

我的朋友

分类: Oracle

2009-07-06 11:01:09

对命令与工具包的一些总结: 

1、对于分区表,建议使用DBMS_STATS,而不是使用Analyze语句。

a)可以并行进行,对多个用户,多个Table

b)可以得到整个分区表的数据和单个分区的数据。

c)可以在不同级别上Compute Statistics:单个分区,子分区,全表,所有分区

d)可以导出统计信息 

e)可以用户自动收集统计信息(alter table monitor )

 

2DBMS_STATS的缺点:

a)不能Validate Structure  (注意:validate structure主要在于校验对象的有效性. compute statistics在于统计相关的信息)

b)不能收集CHAINED ROWS(行链接),不能收集CLUSTER TABLE(簇表)的信息,这两个仍旧需要使用Analyze语句。

c) DBMS_STATS默认不对索引进行Analyze,因为默认CascadeFalse,需要手工指定为True。即GATHER_TABLE_STATS:分析表信息,当cascadetrue时,分析表、列(索引)信息

Analyze是同时更新表和索引的统计信息,而dbms_stats会先更新表的统计信息,然后再更新索引的统计信息(默认CascadeFalse),这里就有一个问题,就是当表的统计信息更新后,而索引的统计信息没有被更新,这时候cbo就有可能选择错误的plan 

3、对于oracle 9里面的External TableAnalyze不能使用,只能使用DBMS_STATS来收集信息。

 

 

Analyze的三大功能:

搜集和删除索引、表和簇的统计信息

验证表、索引和簇的结构ITPUB个人空间

鉴定表和簇的行迁移(migrated rows)和行链接(chained rows)

 

CBOOracle推荐使用的优化方式,要想使用好CBO,使语句发挥最大效能,必须保证统计数据的及时性。统计信息的生成可以有完全计算法和抽样估算法。SQL例句如下:

   完全计算法:analyze table abc compute statistics;
抽样估算法(抽样20%)analyze table abc estimate statistics sample 20 percent;

     对表作完全计算所花的时间相当于做全表扫描,抽样估算法由于采用抽样,比完全计算法的生成统计速度要快,如果不是要求要有非常精确的数据的话,尽量采用抽样分析法。建议对表分析采用抽样估算,对索引分析可以采用完全计算。

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