Chinaunix首页 | 论坛 | 博客
  • 博客访问: 556510
  • 博文数量: 43
  • 博客积分: 8000
  • 博客等级: 中将
  • 技术积分: 1510
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-01 15:07
文章分类

全部博文(43)

文章存档

2011年(1)

2009年(12)

2008年(30)

我的朋友

分类: Oracle

2008-05-17 14:30:49

dbms_stats

 

1.       使用取样来做statistics的收集

如果没有设置取样,那么收集统计数据需要全表扫描和整个数据库表的排序。取样最小化了收集统计数据的所需资源。

Estimate_percent参数用来设置取样值。Oracle公司建议设置estimate_percent参数为dbms_stats.auto_sample_size来最大化性能并获得所需的统计数据的准确度。Auto_sample_sizeoracle判断用于好的统计数据所需的最好的取样尺寸,根据对象的统计数据的属性。

例如

EXECUTE DBMS_STATS.GATHER_SCHEMA_STATS('OE',DBMS_STATS.AUTO_SAMPLE_SIZE);

 

2. 并发统计数据的收集

使用DEGREE来指定dbms_stats的并发度。并发统计数据的收集可以和sample一同使用。Oracle建议设置DEGREE参数为dbms_stats.auto_degree。这就是让oracle根据对象的尺寸和并发有关的init.ora参数设置来选择一个合适的并发度。

 

3.在分区对象上的统计数据

对于分区表和分区索引,DBMS_STATS能为每个分区收集分别的统计数据,能为整个表或索引收集全局统计数据。被收集的分区统计数据的类型在GRANULARITY参数来指定。

 

4Column统计数据和直方图

当在表上收集统计数据的时候,DBMS_STATS收集表的字段的数据分布的信息。关于数据分布的最基本的信息就是字段中的最大值和最小值。但是,如果字段中的数据是skewed,统计数据的level对于优化器的需求就不足了。对于skewed数据分布,直方图也能被创建,用来作为column统计数据来描述指定字段的数据分布。

直方图使用method_opt来指定。Oracle建议设定method_opfor all columns size auto。有了这设定,oracle自动判断哪一个字段需要直方图,每个直方图的bucket的数量。

 

5.判断陈旧的统计数据

为了判断数据库对象是否需要新的统计数据,oracle提供一个表监控工具。当statistics_level=typicalall时,监控被开启。监控追踪表自从上次统计数据被收集以来,表被insert,update,delete的近似值,还有表是否被truncate。表的变化信息可以查看user_tab_modifications视图。随着数据修改,当oracle移植信息到视图的时候,可能会有几分钟的迟延。DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO过程来立即反映在内存中显著的监控信息。

options参数被设置为gather stalegather auto Gather_database_statsgather_schema_stats过程使用旧的统计数据来收集新的统计数据。如果监控表的已经被修改了超过10%,那么这些统计数据被认为是旧的,需要再次被收集。

 

6.用户自定义统计数据

你能创建用户定义的优化器统计数据来支持用户定义的索引和函数。当你把统计数据类型和columndomain索引联系起来时,oracle 以统计数据类型来call统计数据收集方法,无论何时统计数据被收集。

你在创建一个基于函数的索引之后,收集表上的新字段的统计数据,允许oracle来为表达式收集字段统计数据相等信息。通过带有method_opt=’for all hidden columns’call收集统计数据的过程

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