DBMS_STATS分析表 (zt) dbms_stats.set_table_stats 手工設定統計資訊

來源:互聯網
上載者:User

作用: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
可以查到分析資料

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.