zoukankan      html  css  js  c++  java
  • Oracle:DBMS_STATS.GATHER_TABLE_STATS的语法

    作用:DBMS_STATS.GATHER_TABLE_STATS统计表,列,索引的统计信息.

    DBMS_STATS.GATHER_TABLE_STATS的语法如下:

    DBMS_STATS.GATHER_TABLE_STATS (ownname VARCHAR2, tabname VARCHAR2, partname VARCHAR2, estimate_percent NUMBER,   block_sample BOOLEAN, method_opt VARCHAR2, degree NUMBER, granularity VARCHAR2, cascade BOOLEAN, stattab VARCHAR2, statid VARCHAR2,   statown VARCHAR2,   no_invalidate BOOLEAN, force BOOLEAN);

    参数说明:

    ownname:要分析表的拥有者

    tabname:要分析的表名.

    partname:分区的名字,只对分区表或分区索引有用.

    estimate_percent:采样行的百分比,取值范围[0.000001,100],null为全部分析,不采样. 常量:DBMS_STATS.AUTO_SAMPLE_SIZE是默认值,由oracle决定最佳取采样值.

    block_sapmple:是否用块采样代替行采样.

    method_opt:决定histograms信息是怎样被统计的.method_opt的取值如下:

    for all columns:统计所有列的histograms.

    for all indexed columns:统计所有indexed列的histograms.

    for all hidden columns:统计你看不到列的histograms

    for columns <list> SIZE <N> | REPEAT | AUTO | SKEWONLY:统计指定列的histograms.N的取值范围[1,254]; REPEAT上次统计过的histograms;AUTO由oracle决定N的大小;SKEWONLY multiple end-points with the same value which is what we define by "there is skew in the data

    degree:决定并行度.默认值为null.

    granularity:Granularity of statistics to collect ,only pertinent if the table is partitioned.

    cascace:是收集索引的信息.默认为falase.

    stattab指定要存储统计信息的表,statid如果多个表的统计信息存储在同一个stattab中用于进行区分.statown存储统计信息表的拥有者.以上三个参数若不指定,统计信息会直接更新到数据字典.

    no_invalidate: Does not invalidate the dependent cursors if set to TRUE. The procedure invalidates the dependent cursors immediately if set to FALSE.

    force:即使表锁住了也收集统计信息.

    例子:

    execute dbms_stats.gather_table_stats(ownname => 'owner',tabname => 'table_name' ,estimate_percent => null ,method_opt => 'for all indexed columns' ,cascade => true);

    例如:

    在使用DBMS_STATS分析表的时候,我们经常要保存之前的分析,以防分析后导致系统性能低下然后进行快速恢复。

    1、首先创建一个分析表,该表是用来保存之前的分析值:

    SQL> begin
    2 dbms_stats.create_stat_table(ownname=>'TEST',stattab=>'STAT_TABLE');
    3 end;
    4 /

    PL/SQL 过程已成功完成。

    SQL> begin
    2 dbms_stats.gather_table_stats(ownname=>'TEST',tabname=>'T1');
    3 end;
    4 /

    PL/SQL 过程已成功完成。


    2、导出表分析信息到stat_table中

    SQL> begin
    2 dbms_stats.export_table_stats(ownname=>'TEST',tabname=>'T1',stattab=>'STAT_TABLE');
    3 end;
    4 /

    PL/SQL 过程已成功完成。

    SQL> select count(*) from TEST.STAT_TABLE;

    COUNT(*)
    ----------
             4

    EXPORT_COLUMN_STATS:导出列的分析信息
    EXPORT_INDEX_STATS:导出索引分析信息
    EXPORT_SYSTEM_STATS:导出系统分析信息
    EXPORT_TABLE_STATS:导出表分析信息
    EXPORT_SCHEMA_STATS:导出方案分析信息
    EXPORT_DATABASE_STATS:导出数据库分析信息
    IMPORT_COLUMN_STATS:导入列分析信息
    IMPORT_INDEX_STATS:导入索引分析信息
    IMPORT_SYSTEM_STATS:导入系统分析信息
    IMPORT_TABLE_STATS:导入表分析信息
    IMPORT_SCHEMA_STATS:导入方案分析信息
    IMPORT_DATABASE_STATS:导入数据库分析信息
    GATHER_INDEX_STATS:分析索引信息
    GATHER_TABLE_STATS:分析表信息,当cascade为true时,分析表、列(索引)信息
    GATHER_SCHEMA_STATS:分析方案信息
    GATHER_DATABASE_STATS:分析数据库信息
    GATHER_SYSTEM_STATS:分析系统信息

    4、删除分析信息

    SQL> begin
    2 dbms_stats.delete_table_stats(ownname=>'TEST',tabname=>'T1');
    3 end;
    4 /

    PL/SQL 过程已成功完成。

    SQL> SELECT num_rows,blocks,empty_blocks as empty, avg_space, chain_cnt, avg_row_len FROM dba_tables WHERE owner = 'TEST'
    AND table_name = 'T1';

    NUM_ROWS     BLOCKS      EMPTY AVG_SPACE CHAIN_CNT AVG_ROW_LEN
    ---------- ---------- ---------- ---------- ---------- -----------

    没有查到分析数据


    5、导入分析信息

    SQL> begin
    2 dbms_stats.import_table_stats(ownname=>'TEST',tabname=>'T1',stattab=>'STAT_TABLE');
    3 end;
    4 /

    PL/SQL 过程已成功完成。

    SQL> SELECT num_rows,blocks,empty_blocks as empty, avg_space, chain_cnt, avg_row_len FROM dba_tables WHERE owner = 'TEST'
    AND table_name = 'T1';

    NUM_ROWS     BLOCKS      EMPTY AVG_SPACE CHAIN_CNT AVG_ROW_LEN
    ---------- ---------- ---------- ---------- ---------- -----------
          1000          5          0          0          0          16
    可以查到分析数据


     

  • 相关阅读:
    FreeCommander 学习手册
    String详解, String和CharSequence区别, StringBuilder和StringBuffer的区别 (String系列之1)
    StringBuffer 详解 (String系列之3)
    StringBuilder 详解 (String系列之2)
    java io系列26之 RandomAccessFile
    java io系列25之 PrintWriter (字符打印输出流)
    java io系列24之 BufferedWriter(字符缓冲输出流)
    java io系列23之 BufferedReader(字符缓冲输入流)
    java io系列22之 FileReader和FileWriter
    java io系列21之 InputStreamReader和OutputStreamWriter
  • 原文地址:https://www.cnblogs.com/tracy/p/2110508.html
Copyright © 2011-2022 走看看