使用数据地图获取展示信息
在DataWorks的展示界面中,可以提供数据库中指定表的存储量、字段信息、分区信息、变更信息、DDL信息等数据,DataWorks称之为数据地图。AnalyticDB PostgreSQL版提供了对应的查询接口,以支持数据地图所需要展示的信息。
版本限制
内核版本为7.4.2.2及以上的AnalyticDB for PostgreSQL7.0版实例。
使用示例
外表存储量获取
AnalyticDB PostgreSQL版新增了get_oss_table_size(regclass)函数,用于快速查看OSS外表的存储占用。
SELECT get_oss_table_size('public.oss_foreign_test'::regclass);返回示例
get_oss_table_size
--------------------
550207488
(1 row)表字段信息获取
AnalyticDB PostgreSQL版新增了adbpg_toolkit.get_table_columns_info(regclass)函数,用于快速查看任何表的字段信息。
SELECT * FROM adbpg_toolkit.get_table_columns_info('test_table'::regclass) ;返回示例
id | attname | atttype | attnotnull | description | is_primary_key | is_foreign_key | is_partition_key
----+---------+---------+------------+-------------+----------------+----------------+------------------
1 | a | integer | f | | f | f | f
2 | b | date | f | | f | f | t
(2 rows)返回参数说明
参数 | 说明 |
id | 列字段ID。 |
attname | 列字段名称。 |
atttype | 列字段类型。 |
attnotnull | 列是否不能为空。 |
description | 列字段备注。 |
is_primary_key | 列字段是否为主键。 |
is_foreign_key | 列字段是否为外键。 |
is_partition_key | 列字段是否为分区键。 |
表变更信息获取
AnalyticDB PostgreSQL版新增了adbpg_toolkit.get_table_last_operations(regclass)函数,用于获取表DDL相关的变更记录。
SELECT * FROM adbpg_toolkit.get_table_last_operations('test_table'::regclass);返回示例
staactionname | stausename | stasubtype | statime
---------------+------------+------------+-------------------------------
PARTITION | adbpgadmin | EXCHANGE | 2024-08-16 10:53:10.329194+08
CREATE | adbpgadmin | TABLE | 2024-08-16 10:45:50.992821+08
(2 rows)返回参数说明
参数 | 说明 |
staactionname | 变更操作的名称。 |
stausename | 变更操作的执行用户。 |
stasubtype | 变更操作的执行类型。 |
statime | 变更操作的时间。 |
DDL生成获取
AnalyticDB PostgreSQL版新增了dump_parent_table_ddl(regclass)函数,用于获取表的DDL,其中对于分区表,仅获取主表的结构信息,以方便用户了解或复制表结构。
SELECT dump_parent_table_ddl('test_table'::regclass);返回示例
dump_parent_table_ddl
-----------------------------------------------------------------------------------------------------------------------------------------------------
--
-- Greenplum Database database dump
--
-- Dumped from database version 12.12
-- Dumped by pg_dump version 12.12
SET gp_default_storage_options = '';
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET idle_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
SET default_tablespace = '';
--
-- Name: test_table; Type: TABLE; Schema: public; Owner: adbpgadmin
--
CREATE TABLE public.test_table (
a integer,
b date
)
PARTITION BY LIST (b)
DISTRIBUTED BY (a);
ALTER TABLE public.test_table OWNER TO adbpgadmin;
--
-- Greenplum Database database dump complete
--
(39 rows)表统计信息获取
AnalyticDB PostgreSQL版新增了adbpg_toolkit.table_datamap表用于记录所有表的统计信息,新增对应函数用于刷新和查询不同表的统计信息。
Table "adbpg_toolkit.table_datamap"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
----------------+---------+-----------+----------+---------+----------+--------------+-------------
oid | oid | | not null | | plain | |
parent_oid | oid | | | | plain | |
schema_name | text | | | | extended | |
table_name | text | | | | extended | |
size | bigint | | | | plain | |
pretty_size | text | | | | extended | |
tuple_count | bigint | | | | plain | |
is_part_parent | boolean | | | | plain | |
Indexes:
"table_datamap_pkey" PRIMARY KEY, btree (oid)
Distributed by: (oid)
Access method: heap参数说明
字段 | 说明 |
oid | 表的OID。 |
parent_oid | 如果有父表,展示父表的OID。 |
schema_name | 表的Schema名称。 |
table_name | 表的名称。 |
size | 表的大小。 |
pretty_size | 表的大小(更便于阅读)。 |
tuple_count | 元组数量。 |
is_part_parent | 是否为分区父表。 |
刷新统计信息
--- 刷新指定表以及子表的统计信息进入table_datamap SELECT adbpg_toolkit.refresh_table('public.test_table'); --- 刷新所有表的统计信息进入table_datamap SELECT adbpg_toolkit.refresh_datamap();查询统计信息
--- 展示表以及子表的统计信息 SELECT * FROM adbpg_toolkit.show_partition_info('public.test_table');