zoukankan      html  css  js  c++  java
  • 查看搜集统计信息的estimate_percent

    estimate_percent:采样行的百分比,取值范围[0.000001,100],null为全部分析,不采样. 
    
    常量:DBMS_STATS.AUTO_SAMPLE_SIZE是默认值,由oracle决定最佳取采样值.
    
    自动估计要采样的一个segment的最佳百分比:
    
    DBA_TABLES:
    SAMPLE_SIZE	NUMBER	Sample size used in analyzing this table
    
    
    SQL> select owner, table_name, tablespace_name, sample_size
      2    from all_tables
      3   where table_name = 'TEST'
      4     and owner = 'TEST';
    
    OWNER      TABLE_NAME           TABLESPACE_NAME                SAMPLE_SIZE
    ---------- -------------------- ------------------------------ -----------
    TEST       TEST                 TEST                                 72605
    
    
     BEGIN
      DBMS_STATS.GATHER_TABLE_STATS(ownname          => 'TEST',
                                    tabname          => 'TEST',
                                    estimate_percent => 100,
                                    method_opt       => 'for all columns size repeat',
                                    no_invalidate    => FALSE,
                                    degree           => 8,
                                    cascade          => TRUE);
    END;
    
    查看采样率:
    SQL> SELECT owner,
      2         table_name,
      3         num_rows,
      4         sample_size,
      5         trunc(sample_size / num_rows * 100) ectimate_percent
      6    FROM DBA_TAB_STATISTICS
      7   where table_name = 'TEST'
      8   and owner='TEST';
    
    OWNER                          TABLE_NAME                       NUM_ROWS SAMPLE_SIZE ECTIMATE_PERCENT
    ------------------------------ ------------------------------ ---------- ----------- ----------------
    TEST                           TEST                                72605       72605              100
    
    改为20呢?
    
    
    SQL> SELECT owner,
      2         table_name,
      3         num_rows,
      4         sample_size,
      5         trunc(sample_size / num_rows * 100) ectimate_percent
      6    FROM DBA_TAB_STATISTICS
      7   where table_name = 'TEST'
      8   and owner='TEST';
    
    OWNER                          TABLE_NAME                       NUM_ROWS SAMPLE_SIZE ECTIMATE_PERCENT
    ------------------------------ ------------------------------ ---------- ----------- ----------------
    TEST                           TEST                                71720       14344               20
    
    
    改为自动呢?
     
     BEGIN
      DBMS_STATS.GATHER_TABLE_STATS(ownname          => 'TEST',
                                    tabname          => 'TEST',
                                    estimate_percent => dbms_stats.auto_sample_size,
                                    method_opt       => 'for all columns size repeat',
                                    no_invalidate    => FALSE,
                                    degree           => 8,
                                    cascade          => TRUE);
    END;
    
    SQL> SELECT owner,
      2         table_name,
      3         num_rows,
      4         sample_size,
      5         trunc(sample_size / num_rows * 100) ectimate_percent
      6    FROM DBA_TAB_STATISTICS
      7   where table_name = 'TEST'
      8   and owner='TEST';
    
    OWNER                          TABLE_NAME                       NUM_ROWS SAMPLE_SIZE ECTIMATE_PERCENT
    ------------------------------ ------------------------------ ---------- ----------- ----------------
    TEST                           TEST                                72605       72605              100
    
    把表搞大呢?
    SQL> select segment_name,bytes/1024/1024/1024 from dba_segments where segment_name='TEST' and owner='TEST';
    
    SEGMENT_NAME                                                                      BYTES/1024/1024/1024
    --------------------------------------------------------------------------------- --------------------
    TEST                                                                                        1.89355469
    
    还是100%
    SQL> set linesize 200
    SQL> SELECT owner,
      2         table_name,
      3         num_rows,
      4         sample_size,
      5         trunc(sample_size / num_rows * 100) ectimate_percent
      6    FROM DBA_TAB_STATISTICS
      7   where table_name='TEST'
      8   and 
      9    owner='TEST';
    
    OWNER                          TABLE_NAME                       NUM_ROWS SAMPLE_SIZE ECTIMATE_PERCENT
    ------------------------------ ------------------------------ ---------- ----------- ----------------
    TEST                           TEST                              9293440     9293440              100
    回单位在研究

  • 相关阅读:
    Linux下MySQL/MariaDB Galera集群搭建过程
    Linux下Nginx+Tomcat负载均衡和动静分离配置要点
    快速部署tomcat项目的Shell脚本
    利用缓存实现APP端与服务器接口交互的Session控制
    基于xml的Spring多数据源配置和使用
    基于注解的Spring多数据源配置和使用
    MySQL 开启事件 使用定时器调用存储过程
    MyBatis绑定错误--BindingException:Invalid bound statement (not found)
    micropython1.16官方文档转PDF
    dokuwiki使用随笔
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13352198.html
Copyright © 2011-2022 走看看