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