41.36. pg_stats

視圖 pg_stats 提供對儲存在 pg_statistic 資料表裡面的訊息的訪問。這個視圖允許我們只訪問那些在 pg_statistic 裡面對應用戶有權限讀取的資料表的資料行,因此我們可以安全地允許公眾訪問這個視圖。

pg_stats 也設計成把訊息以一種更易讀的方式出現的形式, 它比下層的系統資料表更容易閱讀 — 代價就是如果在 pg_statistic 裡定義了新的資料槽位,那麼我們必須擴展它的視圖定義。

Table 41-36. pg_stats 字串

名字類型引用描述
schemanamenamepg_namespace.nspname包含此資料表的模式名字
tablenamenamepg_class.relname資料表的名字
attnamenamepg_attribute.attname這一行描述的字串的名字
null_fracreal 記錄中字串為空的百分比
avg_widthinteger 字串記錄以字元記的平均寬度
n_distinctreal  如果大於零,就是在字串中獨立數值的估計數目。如果小於零,就是獨立數值的數目被行數除的負數。 (用負數形式是因為 ANALYZE 認為獨立數值的數目是隨著資料表增長而增長; 正數的形式用於在字串看上去好像有固定的可能值數目的情況下。)比如,-1 資料表示一個唯一字串,獨立數值的個數和行數相同
most_common_valsanyarray  一個字串裡最常用數值的列資料表。(如果看上去沒有啥數值比其它更常見,則為 NULL。)
most_common_freqsreal[]  一個最常用數值的頻率的列資料表,也就是說,每個出現的次數除以行數。 (如果 most_common_vals 是 NULL,則為 NULL)
histogram_boundsanyarray  一個數值的列資料表,它把字串的數值分成幾組大致相同熱門的組。如果在 most_common_vals 裡有數值,則在這個餅圖的計算中省略。 (如果字串資料類型沒有 < 操作符或者 most_common_vals 列資料表代資料表了整個分佈性,則這個字串為 NULL。)
correlationreal  統計與字串值的實際行序和邏輯行序有關。它的範圍從 -1 到 +1。 在數值接近 -1 或者 +1 的時候,在字串上的索引掃瞄將被認為比它接近零的時候開銷更少,因為減少了對磁盤的隨機訪問。 (如果字串資料類型沒有 < 操作符,那麼這個字串為 NULL。)

most_common_valshistogram_bounds 數組裡的元素的最大數目可以用 ALTER TABLE SET STATISTICS 命令一個一個字串地設置, 或者透過設置執行時環境變量default_statistics_target 全局地設置。