全部產品
Search
文件中心

Hologres:查看Dynamic Table表結構和血緣

更新時間:Oct 24, 2024

本文將介紹如何查看Dynamic Table的表結構、當前執行個體下的所有Dynamic Table、Dynamic Table的血緣關係、Dynamic Table的儲存明細以及狀態表(State)的管理。

查看Dynamic Table表結構

  • 文法

    SELECT hg_dump_script('[<schema_name>.]<table_name>');
  • 參數說明

    • schema_name:可選,Schema名稱。

    • table_name:必填,Dynamic Table的表名稱。

查看當前執行個體下的Dynamic Table

您可以通過hologres.hg_dynamic_table_properties系統資料表,查看當前執行個體中所有Dynamic Table以及設定的重新整理模式。SQL命令如下。

SELECT dynamic_table_name, property_value FROM hologres.hg_dynamic_table_properties WHERE property_key = 'refresh_mode';

您還可以通過如下SQL命令,查看指定Dynamic Table的所有中繼資料。

SELECT * FROM hologres.hg_dynamic_table_properties WHERE dynamic_table_name='<dynamic_table_name>';

查看Dynamic Table的血緣

查看單個Dynamic Table表的血緣

您可以通過如下SQL命令,查看指定Dynamic Table的血緣資訊。

--查看單個表血緣
SELECT
    d.*,
    CASE WHEN k.dynamic_table_namespace IS NOT NULL THEN
        'd'
    ELSE
        c.relkind
    END
FROM
    hologres.hg_dynamic_table_dependencies d
    LEFT JOIN pg_namespace n ON n.nspname = d.table_namespace
    LEFT JOIN pg_class c ON c.relnamespace = n.oid
        AND c.relname = d.table_name
    LEFT JOIN (
        SELECT
            dynamic_table_namespace,
            dynamic_table_name
        FROM
            hologres.hg_dynamic_table_properties
        GROUP BY
            1,
            2) k ON k.dynamic_table_namespace = d.table_namespace
    AND k.dynamic_table_name = d.table_name
WHERE
    d.dynamic_table_namespace = '<schema_name>'
    AND d.dynamic_table_name = '<dynamic_table_name>'
    AND d.dependency <> 'internal_table';

查看所有Dynamic Table的血緣

您可以通過如下SQL命令,查看當前執行個體中所有Dynamic Table的血緣資訊。

SELECT
    d.*,
    CASE WHEN k.dynamic_table_namespace IS NOT NULL THEN
        'd'
    ELSE
        c.relkind 
    END
FROM
    hologres.hg_dynamic_table_dependencies d
    LEFT JOIN pg_namespace n ON n.nspname = d.table_namespace
    LEFT JOIN pg_class c ON c.relnamespace = n.oid
        AND c.relname = d.table_name
    LEFT JOIN (
        SELECT
            dynamic_table_namespace,
            dynamic_table_name
        FROM
            hologres.hg_dynamic_table_properties
        GROUP BY
            1,
            2) k ON k.dynamic_table_namespace = d.table_namespace
    AND k.dynamic_table_name = d.table_name
WHERE
    d.dependency <> 'internal_table';
說明

base_table_type的取值對應通常如下:

  • r:ordinary table(普通表)。

  • v:view(視圖)。

  • m:materialized view(物化視圖)。

  • f:foreign table(外部表格)。

  • d:Dynamic Table。

查看Dynamic Table儲存明細

Dynamic Table表支援通過hologres.hg_relation_size函數查看儲存大小以及明細,關於hologres.hg_relation_size函數使用詳情,請參見查看錶儲存明細

狀態表(State)管理

增量重新整理的Dynamic Table,為了加速資料計算,會在底層產生一張狀態表(State),用於存放彙總處理結果,預設儲存於預設Table Group中,不支援執行重新分區(Resharding),詳情見Dynamic Table概述。此外,如果將重新整理模式修改為全量重新整理,則狀態表(State)將預設被清理。

查看狀態表(State)的儲存量

通過如下SQL命令,查看狀態表的儲存大小,其儲存計費規則與普通表一致,詳情請參見計費概述

SELECT pg_size_pretty(hologres.hg_dynamic_table_state_size('<dynamic_table_name>'));