HG_STATS_MISSING View
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) | 分類 | 說明 | 建議操作 |
| 列統計資訊缺失 | 指定列尚未收集統計資訊(如MCV、長條圖等)。 | 對該表執行 |
| 列統計資訊缺失 | 指定列的HLL(HyperLogLog)計數器缺失。HLL用於估算分區子表的NDV(不同值數量),在分區表的統計合并中起關鍵作用。 | 對該表執行 |
| 邏輯分區表統計資訊無法合并 | 邏輯分區表存在無法合并統計資訊的子分區。可能是部分子分區的統計資訊缺失或格式不相容。 | 對該分區表及其所有子分區執行 |
| 顯式關閉自動收集 | 該表的AUTO ANALYZE已被手動禁用,因此AUTO ANALYZE不會自動收集統計資訊。 | 如需自動維護統計資訊,請重新啟用表級的AUTO ANALYZE: |
| 類型不符 | 指定列已有的MCV(Most Common Values)或長條圖(Histogram)統計資訊的資料類型與列的當前資料類型不一致。通常發生在列類型被修改之後。 | 對該表重新執行 |
| 表級異常 | 在檢查統計資訊的過程中,表已被刪除或不可訪問。 | 無需處理。該表已不存在,後續查詢將自動忽略。 |
使用樣本
在執行個體列表中點擊執行個體ID進入執行個體詳情,點擊監控資訊在分組中選擇Binlog和Analyze中查看每个 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種:
行數統計資訊+列統計資訊全缺失。
行數有,能用於Plan的基本預估,但是列的詳細統計資訊缺乏(隻影響預估準度)。
(2)的個數 > (1)的個數。
從本文檔可以看到,HG_STATS_MISSING的條數,包含了列統計資訊缺失的情況,等於(2)的個數。
監控指標每个 DB 统计信息缺失的表个数只顯示統計資訊完全缺失的個數,等於(1)的個數。
因此,HG_STATS_MISSING的條數 >= 監控指標每个 DB 统计信息缺失的表个数。