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

NAME

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

SYNOPSIS

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

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

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

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

       table                                      n分析的特定表(可能用模式名-
              袡╮^的名字。預設是當前數據庫裏所有表。

       column  n分析的特定字段的名字。預設是所有字段。

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

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

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

        收集的統p信息通常包括一茖C字段最常用數漲C表以及一茈]線圖,顯示每-
       茼r段裏數據的近似分布。      如果     ANALYZE     認為它抭ㄗS有什麼用,
       (比如,在一荌艉@鍵字的字段上沒有公共的數-
       ^或者是該字段數據類型不支持相關的操作符,       那麼它抭ㄔi以忽略。在
       Chapter 21 ``Routine Database Maintenance'' 中有關於統p的更多信息。

        對於大表,ANALYZE   採集表內容的一蚗H機的抽樣做統p,而不是檢查每一行。
       這樣就保証了即使是在很大的表上,我怳]只需-
       n很少的一些時間就可以完成分析。                      不過,n注意的是統-
       p只是近似的結果,而且每次運行ANALYZE都會導P                     EXPLAIN
       顯示的規劃器的預期開銷有一些小變化,
       即使表內容實際上沒有改變也這樣。在很小的概率的情況下,這-
       茪ˊT定的行為會導P查詢優化器在不同                              ANALYZE
       之間選擇不同的查詢規劃。為了避免這荌暋D,可以提高   ANALYZE   收集的統-
       p數量,像下探yz的那樣。

        分析的廣度可以通過用調整      default_statistics_target       參變量,
       或者是以每字段為基礎通過用   ALTER  TABLE  ...  ALTER  COLUMN  ...  SET
       STATISTICS   (參閱   ALTER  TABLE  [alter_table(7)])  設置每字段的統-
       p目標來控制。目標數]置最常用數-
       C表中的記錄的最大數目以及包線圖中的最大塊數。         預設的目標數O
       10,不過我怚i以調節這蚍獲取規劃器p算精度和      ANALYZE     運行所需-
       n的時間以及  pg_statistic  裏惘據的空間數目之間的正禳C   特別是,把統-
       p目標設置為零就關閉了該字段的統p收集。   這麼做對那些從來不參與到查詢的
       WHERE,GROUP              BY,或者               ORDER               BY
       子句裏的字段是很有用的,因為規劃器不會使用到這樣的字段上的統p。

        在被分析的字段中最大的統p目標決定為統p採樣的表中的行的數目。
       增大目標會導P做 ANALYZE 的時啈角顐狾a增大對時間和空間的需求。

COMPATIBILITYe性
       SQL 標準裏沒有 ANALYZE 語句。

者
       Postgresql  <laser@pgsqldb.org>