可使用Oracle內置的程序包DBMS_STATS來查看或修改蒐集的數據庫統計信息,本篇主要介紹GATHER_TABLE_STATS過程,經過該過程,能夠蒐集表和列(或索引)的統計信息。數據庫
dbms_stats.gather_table_stats(ownname varchar2,spa
tabname varchar2,對象
partname varchar2 default null,索引
estimate_percent number default default_estimate_percent,get
block_sample boolean default false,it
method_opt varchar2 default default_method_opt,io
degree number default default_degree_value,table
granularity varchar2 default default_granularity,效率
cascade boolean default default_cascade,date
stattab varchar2 default null,
statid varchar2 default null,
statown varchar2 default null,
no_invalidate boolean default to_no_invalidate_type(get_param('NO_INVALIDATE')),
stattype varchar2 default 'DATA',
force boolean default false,
-- the context is intended for internal use only.
context dbms_stats.ccontext default null,
options varchar2 default default_options);
標紅的是比較經常使用的參數。
重點介紹下面幾個參數。
method_opt對應的值有以下二者或者二者的結合,默認值是FOR ALL COLUMNS SIZE AUTO:
size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY}
column_clause := column_name | extension name | extension
其中,
該參數設置並行度,默認是NULL,意味着使用建表時默認設置的並行度,經過設置並行度,能夠提升執行的效率。
該參數設置要收集的統計信息的粒度(只在分區表時使用)。值包含:
對於分區表,建議設置該參數值爲ALL。
該參數在收集表的統計信息的同時,也會收集索引統計信息,使用此選項等效於運行GATHER_INDEX_STATS過程。
該參數值若設爲TRUE,則與該表相關聯的遊標不會失效,設置爲FALSE,則會使對應的遊標當即失效,在大批量數據操做,從新收集統計信息時,建議將該參數設置爲FALSE,避免由於收集了統計信息,從而使原來的SQL選擇錯誤的執行計劃。
該參數值進一步說明哪些對象收集統計信息,參數值包含: