Tag: stats

  • ORACLE中dbms_stats的使用

    dbms_stats能良好地估計統計數據(尤其是針對較大的分區表),並能獲得更好的統計結果,最終制定出速度更快的SQL執行計劃。   exec dbms_stats.gather_schema_stats(   ownname          => ‘SCOTT’,   options          => ‘GATHER AUTO’,   estimate_percent => dbms_stats.auto_sample_size,   method_opt       => ‘for all columns size repeat’,   degree           => 15   )       為了充分認識dbms_stats的好處,需要仔細體會每壹條主要的預編譯指令(directive)。下面讓我們研究每壹條指令,並體會如何用它為基於代價的SQL優化器收集最高質量的統計數據。   options參數   使用4個預設的方法之壹,這個選項能控制Oracle統計的刷新方式:   gather——重新分析整個架構(Schema)。   gather empty——只分析目前還沒有統計的表。   gather stale——只重新分析修改量超過10%的表(這些修改包括插入、更新和刪除)。   gather auto——重新分析當前沒有統計的對象,以及統計數據過期(變臟)的對象。註意,使用gather auto類似於組合使用gather stale和gather empty。   註意,無論gather stale還是gather auto,都要求進行監視。如果妳執行壹個alter table xxx monitoring命令,Oracle會用dba_tab_modifications視圖來跟蹤發生變動的表。這樣壹來,妳就確切地知道,自從上壹次分析統計數據以來,發生了多少次插入、更新和刪除操作。   estimate_percent選項   estimate_percent參數是壹種比較新的設計,它允許Oracle的dbms_stats在收集統計數據時,自動估計要采樣的壹個segment的最佳百分比:   estimate_percent => dbms_stats.auto_sample_size   要驗證自動統計采樣的準確性,妳可檢視dba_tables sample_size列。壹個有趣的地方是,在使用自動采樣時,Oracle會為壹個樣本尺寸選擇5到20的百分比。記住,統計數據質量越好,CBO做出的決定越好。   method_opt選項   method_opt:for table –只統計表   for…