43.35. pg_stats

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

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

Table 43-35. 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 全局地設置。