HG_STATS_MISSING View

更新時間:
Copy as MD

HOLOGRES_STATISTIC.HG_STATS_MISSING視圖用來展示當前Database中缺失統計資訊的表。

使用這些資訊,可以協助您:

  • 查看缺失統計資訊的表。缺失統計資訊,可能會導致執行計畫不佳,例如Join Order反序,造成大表Shuffle,帶來計算慢、OOM等問題。

  • 查看Hologres監控指標中,每个 DB 统计信息缺失的表个数指標對應的具體表明細。

  • 有選擇地,對缺失統計資訊的表,進行手動ANALYZE等治理。

使用限制

  • 您的Hologres執行個體版本必須在V2.2.15及以上。

  • 查詢者只能查到自己有SCHEMA USAGE許可權(及以上)的Schema下的表。

  • 不支援顯示除Holo單表、分區表、外表和物化視圖以外的表類型(也不會顯示在指標裡)。

欄位介紹

HOLOGRES_STATISTIC.HG_STATS_MISSING視圖的欄位和描述如下:

列名

資料類型

描述

schemaname

TEXT

Schema Name

tablename

TEXT

Table Name

nattrs

INTEGER

列的個數

tablekind

TEXT

Table種類(table, foreign_table等)

fdwname

TEXT

外表的Foreign Data Wrapper

autovacuum_enabled

TEXT

是否開啟Auto Analyze。

說明

V3.1版本支援該欄位。

reason

TEXT

統計資訊缺失的原因,您可以根據原因進行下一步處理。

說明

V3.1版本支援該欄位。

reason 缺失原因的分類

原因(reason)

分類

說明

建議操作

column "<列名>" missing

列統計資訊缺失

指定列尚未收集統計資訊(如MCV、長條圖等)。

對該表執行ANALYZE語句,或等待AUTO ANALYZE自動補齊。

column "<列名>" missing hll

列統計資訊缺失

指定列的HLL(HyperLogLog)計數器缺失。HLL用於估算分區子表的NDV(不同值數量),在分區表的統計合并中起關鍵作用。

對該表執行ANALYZE語句,系統將自動產生HLL計數器,或等待AUTO ANALYZE自動補齊。

unable to merge parts

邏輯分區表統計資訊無法合并

邏輯分區表存在無法合并統計資訊的子分區。可能是部分子分區的統計資訊缺失或格式不相容。

對該分區表及其所有子分區執行ANALYZE語句,或等待AUTO ANALYZE自動補齊。

autovacuum disabled

顯式關閉自動收集

該表的AUTO ANALYZE已被手動禁用,因此AUTO ANALYZE不會自動收集統計資訊。

如需自動維護統計資訊,請重新啟用表級的AUTO ANALYZE:ALTER TABLE <表名> SET (autovacuum_enabled = true);

column "<列名>" stats type mismatch: MCV/HISTOGRAM

類型不符

指定列已有的MCV(Most Common Values)或長條圖(Histogram)統計資訊的資料類型與列的當前資料類型不一致。通常發生在列類型被修改之後。

對該表重新執行ANALYZE語句以重新整理統計資訊,或等待AUTO ANALYZE自動補齊。

relation vanished

表級異常

在檢查統計資訊的過程中,表已被刪除或不可訪問。

無需處理。該表已不存在,後續查詢將自動忽略。

使用樣本

在執行個體列表中點擊執行個體ID進入執行個體詳情,點擊監控資訊在分組中選擇BinlogAnalyze中查看每个 DB 统计信息缺失的表个数

以其中一個DB為例,查看當前DB中統計資訊缺失的表。

SELECT * FROM hologres_statistic.hg_stats_missing;

返回結果如下。

    schemaname             |            tablename             | nattrs |   tablekind   | fdwname  | autovacuum_enabled |            reason
------------------------------------+----------------------------------+--------+---------------+----------+--------------------+------------------------------
 hologres_foreign_dataset_tpch_100g | odps_customer_100g               |      8 | foreign table | odps_fdw | t                  | column "c_custkey" missing
 hologres_foreign_dataset_tpch_100g | odps_nation_100g                 |      4 | foreign table | odps_fdw | t                  | column "n_nationkey" missing
 hologres_foreign_dataset_tpch_100g | odps_orders_100g                 |      9 | foreign table | odps_fdw | t                  | column "o_orderkey" missing
 hologres_foreign_dataset_tpch_100g | odps_part_100g                   |      9 | foreign table | odps_fdw | t                  | column "p_partkey" missing
 hologres_foreign_dataset_tpch_100g | odps_lineitem_100g               |     16 | foreign table | odps_fdw | t                  | column "l_orderkey" missing
 public                             | spatialxxxxx                     |      5 | table         |          | t                  |
 public                             | smtxxx                           |      4 | foreign table | oss_fdw  | t                  |
 public                             | smtxxxxx                         |      4 | foreign table | oss_fdw  | t                  | 

此時可以對缺失統計資訊的表手動執行ANALYZE。

ANALYZE spatialxxxxx;

重新回到監控頁面,發現每个 DB 统计信息缺失的表个数指標下降。

常見問題

Q:為什麼執行HG_STATS_MISSING的條數大於監控指標顯示個數?

口徑有所差異。

統計資訊的缺失分2種:

  1. 行數統計資訊+列統計資訊全缺失。

  2. 行數有,能用於Plan的基本預估,但是列的詳細統計資訊缺乏(隻影響預估準度)。

(2)的個數 > (1)的個數。

從本文檔可以看到,HG_STATS_MISSING的條數,包含了列統計資訊缺失的情況,等於(2)的個數。

監控指標每个 DB 统计信息缺失的表个数只顯示統計資訊完全缺失的個數,等於(1)的個數。

因此,HG_STATS_MISSING的條數 >= 監控指標每个 DB 统计信息缺失的表个数