Provided by: manpages-zh_1.6.3.2-1_all bug

NAME

       ANALYZE - 收集與數據庫有關的統計

SYNOPSIS

       ANALYZE [ VERBOSE ] [ table [ (column [, ...] ) ] ]

DESCRIPTION 描述

       ANALYZE  收集有關  PostgreSQL  表的內容的統計,然後把結果保存在系統表 pg_statistic  裏。隨
       後,查詢規劃器就可以使用這些統計幫助判斷查詢的最有效的規劃。

        如果沒有參數,ANALYZE 檢查在當前數據庫裏的所有表。 如果有參數,ANALYZE 只檢查那個表。  你
       還可以給出一列字段名字,這個時候只收集那些字段的統計信息。

PARAMETERS 參數

       VERBOSE
               打開處理過程信息的顯示。

       table
               要分析的特定表(可能用模式名修飾)的名字。缺省是當前數據庫裏所有表。

       column
               要分析的特定字段的名字。缺省是所有字段。

OUTPUTS 輸出

        如果聲明瞭 VERBOSE,ANALYZE 發出進度信息,表明當前正在處理的是哪行。 同時打印有關改表的很
       多其它信息。

NOTES 注意

        週期性地運行 ANALYZE,或者在對錶的大部分內容做了更改之後馬上運行它是個好習慣, 準確的統計
       信息將幫助規劃器選擇最合適的查詢規劃,並因此而改善查詢處理的速度。  一種比較經常採用的策略
       是每天在低負荷的時候運行一次 VACUUM [vacuum(7)] 和 ANALYZE。

        和 VACUUM FULL 不同的是, ANALYZE 只需要在目標表上有一個讀取鎖, 因此它可以和表上的其它活
       動並行地運行。

        收集的統計信息通常包括一個每字段最常用數值的列表以及一個包線圖,顯示每個字段裏數據的近似
       分佈。  如果  ANALYZE  認爲它們都沒有什麼用,   (比如,在一個唯一鍵字的字段上沒有公共的數
       值)或者是該字段數據類型不支持相關的操作符,  那麼它們都可以忽略。在  Chapter 21 ``Routine
       Database Maintenance'' 中有關於統計的更多信息。

        對於大表,ANALYZE 採集表內容的一個隨機的抽樣做統計,而不是檢查每一行。 這樣就保證了即使是
       在很大的表上,我們也只需要很少的一些時間就可以完成分析。  不過,要注意的是統計只是近似的結
       果,而且每次運行ANALYZE都會導致 EXPLAIN 顯示的規劃器的預期開銷有一些小變化,  即使表內容實
       際上沒有改變也這樣。在很小的概率的情況下,這個不確定的行爲會導致查詢優化器在不同   ANALYZE
       之間選擇不同的查詢規劃。爲了避免這個問題,可以提高 ANALYZE  收集的統計數量,像下面描述的那
       樣。

        分析的廣度可以通過用調整  default_statistics_target  參變量,  或者是以每字段爲基礎通過用
       ALTER TABLE ... ALTER COLUMN ... SET STATISTICS  (參閱  ALTER TABLE [alter_table(7)]) 設
       置每字段的統計目標來控制。目標數值設置最常用數值列表中的記錄的最大數目以及包線圖中的最大塊
       數。 缺省的目標數值是 10,不過我們可以調節這個數值獲取規劃器計算精度和 ANALYZE  運行所需要
       的時間以及  pg_statistic 裏面佔據的空間數目之間的平衡。 特別是,把統計目標設置爲零就關閉了
       該字段的統計收集。 這麼做對那些從來不參與到查詢的 WHERE,GROUP BY,或者 ORDER BY  子句裏的
       字段是很有用的,因爲規劃器不會使用到這樣的字段上的統計。

        在被分析的字段中最大的統計目標決定爲統計採樣的表中的行的數目。  增大目標會導致做  ANALYZE
       的時候成比例地增大對時間和空間的需求。

COMPATIBILITY 兼容性

       SQL 標準裏沒有 ANALYZE 語句。

譯者

       Postgresql 中文網站 何偉平 <laser@pgsqldb.org>

       本頁面中文版由中文 man 手冊頁計劃提供。
       中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh