本文將介紹如何查看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>'));