11G新特性 -- 分區表和增量統計信息


對於分區表,優化器會在全局級別為整個表維護一份統計信息,也會在分區級別為分區表維護一份統計信息。 對於大多數分區,dml一般都是在最近的分區上執行。在11g中,數據庫支持只對那些發生一定數據變化的分區收集統計信息(默認的threshold是分區的10%的行)

11g之前,數據庫為了獲得global統計信息,必須掃描整個表。而在11g中,數據庫可以增量維護global統計信息,通過僅掃描那些有一定比例數據發生變化的分區,其他分區仍然使用老的統計信息。

分區表的增量統計信息不會增量維護直方圖。

使用dbms_stat包指定分區表的分析粒度(auto、global、global and partition、all、partition、subpartition)。 如果將粒度設置為global並且將表標記為incremental的,數據庫在增量的基礎上收集全局統計信息。數據庫也會對發生改變的分區進行自動收集統計信息。

Oracle will update the global table statistics by scanning only the partitions that have been changed instead of the entire table if the following conditions hold:
•INCREMENTAL value for the partitioned table is set to TRUE;
•PUBLISH value for the partitioned table is set to TRUE;
•User specifies AUTO_SAMPLE_SIZE for ESTIMATE_PERCENT and AUTO for GRANULARITY when gathering statistics on the table
begin
   dbms_stats.set_table_prefs(
           'SCOTT','DEPT','INCREMENTAL','TRUE');
end;
/

現在,您應該專門收集此表中粒度為 AUTO的分區 DEPT_01 上的統計信息。
begin
   dbms_stats.gather_table_stats (
           ownname         => 'SCOTT',
           tabname         => 'DEPT',
           partname        => 'DEPT_01',
           granularity     => 'AUTO'
   );
end;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM