Home > dbms_stats, oracle > 10g dbms_stats

10g 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收集统计数据的过程

  1. No comments yet.
  1. No trackbacks yet.

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word

Videos, Slideshows and Podcasts by Cincopa Wordpress Plugin