[Oracle] Oracle收集統計資訊的取樣比例

tolilong發表於2017-10-15
Oracle收集統計資訊的取樣比例:

 SELECT owner, segment_name, ROUND (SUM (bytes) / 1024 / 1024) size_mb,
         case when sum(bytes)/1024/1024 <  1 then '100'
         when sum(bytes)/1024/1024 >= 1    and sum(bytes)/1024/1024 < 1000 then '20'
         when sum(bytes)/1024/1024 >= 1000 and sum(bytes)/1024/1024 < 100000 then '5'
         when sum(bytes)/1024/1024 >= 100000 then '1' end estimate_percent
  FROM dba_segments
  WHERE segment_type like 'TABLE%' GROUP BY owner, segment_name

exec dbms_stats.gather_database_stats(estimate_percent=>100,degree=>4,cascade=>true,granularity=>'ALL');
exec dbms_stats.gather_table_stats(username,'tablename',estimate_percent=>100,degree=>4,cascade=>true,granularity=>'ALL');  
user: username
tablename : 指定的tablename
estimate_percent: 取樣比例,資料量大采樣比例小,資料量小取樣比例大.預設為100
degree : 收集時候的並行度.預設為null
cascade: 表示是否收集表對應的索引、列等的統計資訊
granularity :  ① ALL:採集Global、partition、subpartition等粒度統計資訊。
                  ② AUTO:根據分割槽型別,由Oracle確定統計資訊採集粒度。
                  ③ PARTITION:只採集partition粒度統計資訊。
                  ④ SUBPARTITION:只採集subpartition粒度統計資訊

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

相關文章