HOLOGRES_STATISTIC.HG_STATS_MISSING ビューには、現在のデータベース内で統計情報が欠落しているテーブルが一覧表示されます。
このビューを使用して、次のことができます:
統計情報が欠落しているテーブルを確認できます。統計情報が欠落していると、オプティマイザが不適切な実行計画を生成する可能性があります。たとえば、誤った結合順序により大規模テーブルのシャッフルが発生し、クエリの低速化やメモリ不足 (OOM) エラーにつながることがあります。
Hologres モニタリングの [Stats Miss Table Num by DB] メトリックに対応する具体的なテーブルを確認できます。
統計情報が欠落しているテーブルに対して、手動で ANALYZE を実行するなど、必要なガバナンス操作を選択して実行できます。
制限
Hologres インスタンスは V2.2.15 以降である必要があります。
クエリは、実行ユーザーが SCHEMA USAGE 以上の権限を持つスキーマ内のテーブルのみを返します。
Hologres 内部テーブル、パーティションテーブル、外部テーブル、マテリアライズドビュー以外のテーブルタイプは表示されません (また、メトリックからも除外されます)。
フィールド
次の表に、HOLOGRES_STATISTIC.HG_STATS_MISSING ビューのフィールドを示します。
フィールド | データ型 | 説明 |
schemaname | TEXT | スキーマ名。 |
tablename | TEXT | テーブル名。 |
nattrs | INTEGER | 列数。 |
tablekind | TEXT | テーブルタイプ (例:table、foreign_table)。 |
fdwname | TEXT | 外部データラッパー (FDW) 名。外部テーブルの場合にのみ設定されます。 |
autovacuum_enabled | TEXT | テーブルで自動 ANALYZE が有効かどうかを示します。 説明 V3.1 でのみ使用できます。 |
reason | TEXT | 統計情報が欠落している理由。このフィールドを基に、次の対応を判断します。 説明 V3.1 でのみ使用できます。 |
reason:欠落理由の分類
理由 | カテゴリ | 説明 | 推奨アクション |
| 列統計情報の欠落 | 指定した列の統計情報 (最頻値 (MCV) やヒストグラムなど) が収集されていません。 | テーブルに対して |
| 列統計情報の欠落 | 指定した列の HyperLogLog (HLL) カウンターが欠落しています。HLL はパーティション子テーブルの個別値の数 (NDV) を推定するために使用され、パーティションテーブルの統計情報マージにおいて重要な役割を果たします。 | テーブルに対して |
| 論理パーティションテーブル統計のマージ不可 | 論理パーティションテーブルに、統計情報をマージできない子パーティションが存在します。これは、一部の子パーティションで統計情報が欠落している、または互換性がないことが原因の可能性があります。 | パーティションテーブルとすべての子パーティションに対して |
| 自動収集が明示的に無効 | テーブルの自動 ANALYZE が手動で無効にされているため、統計情報が自動的に収集されません。 | 統計情報の自動メンテナンスを再度有効にするには、テーブルレベルの自動 ANALYZE を有効にします: |
| 型不一致 | 指定した列に存在する最頻値 (MCV) またはヒストグラムの統計情報のデータ型が、列の現在のデータ型と一致していません。これは通常、列の型を変更した後に発生します。 | テーブルに対して |
| テーブルレベルの例外 | 統計情報のチェック中に、テーブルが削除された、またはアクセスできなくなりました。 | 対応は不要です。テーブルは既に存在しないため、以降のクエリでは自動的に無視されます。 |
例
インスタンスリストでインスタンス ID をクリックし、インスタンスの詳細ページに移動します。 グループ名 をクリックし、 Binlog and Analyze を選択して、 Stats Miss Table Num by 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;モニタリングページに戻ります。 Stats Miss Table Num by DB メトリックが減少します。
よくある質問
Q: HG_STATS_MISSING が返す行数が、モニタリングメトリックに表示されるカウントを上回るのはなぜですか。
2 つのカウントでは判定基準が異なります。
統計情報の欠落には、次の 2 種類があります:
行数と列統計情報の両方が完全に欠落しているケース。
行数は存在し、クエリの実行計画で基本的な見積もりに使用できますが、詳細な列統計情報が欠落しているケース (見積もり精度にのみ影響します)。
(2) のカウントは (1) のカウント以上になります。
前述のとおり、HG_STATS_MISSING が返す行数には列統計情報が欠落しているケースが含まれ、これは (2) のカウントに相当します。
Stats Miss Table Num by DB モニタリングメトリックでは、統計情報が完全に欠落しているテーブルのみが表示され、これは (1) のカウントに相当します。
そのため、HG_STATS_MISSING が返す行数は Stats Miss Table Num by DB メトリックの値以上になります。