【調優】CBO基礎(五)

yellowlee發表於2011-12-27

收集物件資訊

 

前面看到了物件統計資訊的重要性,再來看看如何獲取和保證這些資訊:

 

The DBMS_STATS subprograms perform. the following general operations:

 

Gathering Optimizer Statistics

Setting or Getting Statistics

Deleting Statistics

Transferring Statistics

Locking or Unlocking Statistics

Restoring and Purging Statistics History

User-Defined Statistics

Pending Statistics

Comparing Statistics

Extended Statistics

 

最好的瞭解方法是檢視這個packagedbms_stats的說明,這個包在sys使用者下。

 

使用一把,以gather_table_stats為例:

SQL> begin

  2    dbms_stats.gather_table_stats(ownname => 'TEST', --擁有者使用者名稱

  3                                  tabname => upper('t_test_statistics1'),--表名

  4                                  degree  => 2, --並行度,也可以設定為預設值

  5                                  --DBMS_STATS.AUTO_DEGREE

  6                                  cascade          => true, --是否收集索引統計資訊

  7                                  method_opt       => '',

  8                                  estimate_percent => 100, --是否取樣收集,值為取樣百分比

  9                                  --或者取常量:DBMS_STATS.AUTO_SAMPLE_SIZE0

 10                                  block_sample => true,--採用資料行或者塊取樣,true為塊

 11                                  granularity  => 'AUTO', --分割槽粒度級別,取值為

 12                                  --AUTO ALL GLOBAL PARTITION

 13                                  --SUBPARTITION GLOBAL AND PARTITION10g預設AUTO

 14                                  force => false);

 15  end;

 16 

 17  /

 

PL/SQL procedure successfully completed.

此外還有gather_temp是否收集臨時表統計資訊,gather_sys是否收集sys使用者的統計資訊等

或者也可以使用 analyze table 來收集統計資訊:

SQL> analyze table t_test_statistics1 compute statistics;

Table analyzed.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16179598/viewspace-714027/,如需轉載,請註明出處,否則將追究法律責任。

相關文章