Update Statistics用法

1、Update Statistics的做用
  爲了提升數據庫的效率,INFORMIX提供了一個基於成本的查詢優化器,執行update statistics語句的做用就是將您建立的數據庫表的有關統計信息更新到系統sysmaster的相關表中(如systables、syscolumns、sysindexes、sysdistrib、sysprocplan等),以便查詢優化器選擇最佳的執行路徑。當sysmaster庫中沒有相應的統計信息,或者統計信息不十分準確時,優化器便沒法制定一個行之有效的查詢策略,其結果必然是進行大量極其可怕的順序掃描,產生嚴重的性能問題。
  
  所以,當您從新裝載數據或者對數據庫表進行了大量的更新操做後,應該及時執行update statistics。也許您會發現,數據庫一些參數配置的不合理可能使數據庫效率下降百分之幾,但若是您沒有按期執行update statistics的話。數據庫的性能則可能下降幾到十幾倍。
  
  2、Update Statistics的語法
  執行update statistics共有三個級別,即:update statisticslow、updates tatistics medium、update statistics high。
  1 update statistics[low]for table[{table-name|synonym-name}[(column-list)]]][drop distributions]
  update statistics low只更新表、字段、記錄數、頁數及索引等的最基本信息,對字段的分佈狀況不作統計。其語法說明以下:
  
  (1)update statistics或update statisticslow,對當前數據庫中全部表(包括系統表)及過程進行更新統計。
  (2)update statistics low for table,對當前數據庫中全部表(包括臨時表,但不包括系統表)進行更新統計。
  (3)update statistics low for table tablename,對指定的表全部字段進行更新統計。
  (4)update statistics low for table tablename(column-list),對指定表的指定字段進行更新統計。
  (5)若是不帶drop distributions,原有字段分佈狀況依然保留;不然,原有字段分佈狀況將被刪除。
  2 update statistics medium[for table[{table-name|synonym-name}[(column-list)]]][resolution percent[conf]][distributions only]
  update statistics medium除了更新表、字段、記錄數、頁數及索引等的最基本信息外,對字段的分佈狀況會採起抽樣的辦法來統計,所以與update statistics low相比須要花費更多的時間。其語法說明以下:
  
  (1)resolution percent是指分佈統計的詳細程序,percent定義的是一個百分數,如resolution2意思是指按照字段的值分佈統計成50段,若是不指定resolution percent,缺省值爲2.5。
  (2)conf是指分佈統計時取樣的比例,conf參數的取值範圍爲0.80—0.99,缺省值爲0.95。
  (3)若是指定了distributions only,則對索引的信息不作更新統計。
  3 update statistics high[for table[{table-name|synonym-name}[(column-list]]][resolutionpercent][distributions only]
  update statistics high與update statistics medium的區別是在統計字段的分佈狀況時,後者採用了取樣的辦法,而前者進行所有統計,所以update statistics high更新統計最全面,執行時間也最長。其語法說明以下:
  
  (1)若是不指定resolution percent,缺省值爲0.5。
  (2)若是指定了distributions only,則對索引的信息不作更新統計。
  4 update statistics for procedure[procedure-name],只對指定的過程進行更新統計,對錶不作更新統計
  
  3、如何執行Update Statistics
  一般執行update statistics的方法是:
  
  1 對錶中不帶索引的字段執行update statistics medium,每一個表執行一次。通常狀況下,缺省參數就足夠了。對於特別大的表(執行update statistics時,一般把超過26570條記錄的表定義爲特別大的表),能夠帶參數resolution1.00.99。
  2 對錶中帶有索引的字段執行update statistics high,每一個字段執行一次。
  3 對錶中帶有複合索引的字段執行update statistics low,每一個表執行一次。
  4 對每個小表執行update statistic shigh。
  
  4、注意事項
  1 數據庫自己不會自動更新sysmaster庫中有關statistics統計信息,只有執行update statistics語句後,才能獲得更新。
  2 執行update statistics語句時,必須具備DBA權限或者爲表的屬主。
  3 因爲update statistics一般爲單線程運行,不能利用PDQ等併發功能,對於一個較大的數據庫,執行update statistics語句通常須要幾個小時。爲提升效率,能夠將update statistics分爲多個shell程序同時執行,並充分考慮數據空間分佈狀況,在併發執行時減小磁盤讀寫的衝突。
  4 執行update statistics語句會佔用一些臨時空間,當臨時空間不夠時,數據庫將提示錯誤。您能夠經過設置DBUPSPACE環境變量,使update statistics在遇到臨時空間不夠時分步來執行排序統計。shell

相關文章
相關標籤/搜索