<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # ANALYZE ## Name ANALYZE?--?收集與數據庫有關的統計信息 ## Synopsis ``` ANALYZE [ VERBOSE ] [ _table_name_ [ ( _column_name_ [, ...] ) ] ] ``` ## 描述 `ANALYZE`收集數據庫中表內容的統計信息,然后把結果保存在系統表[`pg_statistic`](#calibre_link-769)里。 隨后,查詢規劃器就可以使用這些統計幫助判斷查詢的最佳規劃。 使用本命令時如果不帶任何參數,`ANALYZE`將檢查當前數據庫里的所有表。 如果有參數,`ANALYZE`只檢查那個指定的表。 你還可以指定一些字段的名字,在這種情況下,將只收集那些字段的統計信息。 ## 參數 `VERBOSE` 顯示處理過程的信息。 `_table_name_` 要分析的指定表(可以用模式名修飾)的名字。缺省是當前數據庫里所有表(不包含外部數據表)。 `_column_name_` 要分析的指定字段的名字。缺省是所有字段。 ## Outputs 如果使用了`VERBOSE`選項,那么`ANALYZE`在執行過程中會顯示很多進度信息,表明當前正在處理的是哪個表。 同時打印有關該表的很多其它信息。 ## 注意 只有在明確指定了外部數據表時,這些表才會被分析處理。也不是所有的外部數據封裝器都支持`ANALYZE`。 如果表的封裝器不支持`ANALYZE`,在執行此命令時會顯示一個警告信息,系統不會做任何處理。 在默認的PostgreSQL配置中,autovacuum守護進程(參見[Section 23.1.6](#calibre_link-77))負責在初次加載數據時自動分析表。 因為它們會改變整個常規操作。 當autovacuum關閉時,周期性地運行`ANALYZE`,或者在對表的大部分內容做了更改之后馬上運行它是個好習慣。 準確的統計信息將幫助規劃器選擇最合適的查詢規劃,并因此改善查詢處理的速度。 對以讀取為主要負載的數據庫,一種比較經常采用的策略是每天在低負荷的時候運行一次[VACUUM](#calibre_link-748)和`ANALYZE` 。 `ANALYZE`只需要在目標表上有一個讀取鎖,因此它可以和表上的其它活動并發地運行。 `ANALYZE`收集的統計信息通常包括每個字段最常用數值的列表以及顯示每個字段里數據近似分布的柱狀圖。 如果`ANALYZE`認為它們都沒有什么用(比如在一個擁有唯一約束的字段上沒有公共的數值)或者是該字段數據類型不支持相關的操作符,那么它們都可以忽略。 在[Chapter 23](#calibre_link-1273)中有關于統計的更多信息。 對于大表,`ANALYZE`采集表內容的一個隨機抽樣做統計, 而不是檢查每一行。 這樣就保證了即使是在很大的表上也只需要很少時間就可以完成分析。 不過,要注意的是統計只是近似的結果, 而且每次運行`ANALYZE`時,即使表的內容沒有任何變化,分析的結果也可能有稍許差異。 這也會導致[EXPLAIN](#calibre_link-575)顯示的規劃器的預期開銷有一些小變化。 在極少的情況下,此非決定論會引發規劃器在`ANALYZE`運行后引發查詢 計劃更改。 為了避免這個問題,可以提高`ANALYZE`收集的統計數量, 像下面描述的那樣。 分析的廣度可以通過用調整[default_statistics_target](#calibre_link-979)配置參數, 或者是以每字段為基礎通過用`ALTER TABLE ... ALTER COLUMN ... SET STATISTICS`(參見[ALTER TABLE](#calibre_link-88))設置每字段的統計目標來控制。 目標數值設置最常用數值列表中的記錄的最大數目以及柱狀圖中的最大塊數。 缺省的目標數值是100,不過可以調節這個數值獲取規劃器計算精度和`ANALYZE`運行所需要的時間以及`pg_statistic`里面占據的空間數目之間的平衡。 特別是,把統計目標設置為零就關閉了該字段的統計收集。 這么做對那些從來不參與到查詢的`WHERE`,`GROUP BY`或者`ORDER BY`選項里的字段是很有用的,因為規劃器不會使用到這樣的字段上的統計。 在被分析的字段中最大的統計目標決定統計采樣的行數。 增大目標會導致`ANALYZE`的時候成比例地增大對時間和空間的需求。 `ANALYZE`的一個估計值是出現在每列的不同值的數目。 因為僅僅行的一個子集被檢查,這個估計值有時會很不準確,甚至是對最大可能的統計目標。 如果這個錯誤導致了差的查詢計劃,一個更精確的值可以通過手動確定并且然后通過`ALTER TABLE ... ALTER COLUMN ... SET (n_distinct = ...)`安裝。 (參見[ALTER TABLE](#calibre_link-88))。 如果已分析的表有一個或者更多子表,`ANALYZE`將會收集統計兩次: 一次僅僅在父表的行上,第二次是在父表及其所有子表的行上。 第二次收集的統計數據在查詢規劃器遍歷整個繼承樹結構時會用到。 不過,autovacuum守護進程在決定觸發一個對一個表的自動分析時,會僅僅考慮在父表上進行插入或者更新。 如果那個表幾乎不插入或者更新,繼承的統計數據將不再更新,除非您手動運行`ANALYZE`。 如果擬分析的表成了一個空表,則`ANALYZE`不會記錄該表的統計信息。而原來已有有統計信息則會保留。 ## 兼容性 SQL標準里沒有`ANALYZE`語句。 ## 參見 [VACUUM](#calibre_link-748), [vacuumdb](#calibre_link-754), [Section 18.4.4](#calibre_link-752), [Section 23.1.6](#calibre_link-77)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看