ITPub博客

首页 > 数据库 > Oracle > oracle 11g统计信息收集

oracle 11g统计信息收集

原创 Oracle 作者:dingzihan 时间:2014-03-18 10:33:04 0 删除 编辑
1、不同数据库版本的缺省设置:
1)estimate_percent的缺省值:
   9i: 100%
  10g: DBMS_STATS.AUTO_SAMPLE_SIZE(使用非常小的估算百分比)
   11g:DBMS_STATS.AUTO_SAMPLE_SIZE(100%)
2) METHOD_OPT:defaults:
  9i: "FOR ALL COLUMNS SIZE 1",等同于没有列值的具体分布信息。
  10g and11g:“FOR  ALL COLUMNS SIZE AUTO"。
设置成AUTO意味着如果histogram的存在会有助于生成更准确的执行计划,DBMS_STATS会自动在需要的字段上生成它。
在11g中,AUTO_SAMPLE_SIZE的缺省值是100%,从而尽可能使统计信息是准确的。在之前的版本上,由于时间的制约,100%的sample size有时候是不可能的,由于11G实施了一个新的hash算法避免了传统的排序(在9i和10g典型慢的部分是排序),这显著的减少了收集的时间并提升了资源使用效率。同样,是否收集列上的统计信息也是自动决定的。


2、快速重建统计信息的推荐步骤:
为快速删除和重建某张表及它的索引的统计信息(包含非均匀分布列的统计信息):
exec  dbms_stats.delete_table_stats(ownname=>'user_name',
        tabname=>'table_name',cascade_indexes=>true);
exec dbms_stats.gather_table_stats(ownname=>'user_name',
        tabname=>'table_name',
        estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE,
        cascade=>true,
       method_opt=>'for all columns size AUTO');

3、统计信息收集命令的几种情况
a、收集表的统计信息
   exec  dbms_stats.gather_table_stats(
           ownname=>'schema_name',
           tabname=>'table_name',
           estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE,
           cascade=>true,
           method_opt=>'FOR ALL COLUMNS SIZE AUTO');
b、收集某一schema下的所有对象的统计信息
    exec  dbms_stats.gather_schema_stats(
           ownname=>'schema_name',
           cascade=>true,
           method_opt=>'FOR  ALL  COLUMNS  SIZE AUTO');

C、收集database中所有对象的统计信息
     exec dbms_stats.gather_database_stats(
           cascade=>true,
           method_opt=>'FOR ALL COLUMNS SIZE AUTO');

禁用自动统计信息收集作业
begin
   dbms_auto_task_admin.disable
     (client_name=>'auto optimizer stats collection',
       operation=>null,
       window_name=>null);
    end;
/





来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22969361/viewspace-1123840/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-12-04

  • 博文量
    55
  • 访问量
    456290