Hologres兼容PostgreSQL,当前支持查看表和数据库存储大小,以及设置数据库和表的属性。
函数 | 功能 |
用于设置数据库的Table Group和Shard Count属性。 | |
支持查看表的明细存储,包括数据、Binlog等存储明细。 | |
查看当前连接的数据库和该数据库下内部表的存储规格大小。 | |
查看表的存储大小。 | |
用于设置表的属性,包括索引、分布列、行存储、列存储以及生命周期等属性。 |
HG_UPDATE_DATABASE_PROPERTY
描述:用于设置数据库的Table Group和Shard Count属性。
CALL HG_UPDATE_DATABASE_PROPERTY ('property', 'value');
使用限制
仅实例的Superuser和数据库的Owner可以调用
HG_UPDATE_DATABASE_PROPERTY
函数。参数说明
property:属性名称。当前仅支持default_table_group和shard_count两个属性,属性说明如下:
default_table_group:设置某个Table Group为默认Table Group。
说明仅Hologres V0.10及以上版本支持使用此参数。如果您的实例是V0.10以下版本,您可以进行实例升级或加入Hologres钉钉交流群反馈,详情请参见如何获取更多的在线支持?。
shard_count:设置默认Table Group的Shard Count(不建议使用)。
value:属性值。
示例
设置默认Table Group为
TG120
的Table Group,语句如下。CALL HG_UPDATE_DATABASE_PROPERTY ( 'default_table_group', 'TG120' );
HOLOGRES.HG_RELATION_SIZE
描述:支持查看表的明细存储,包括数据、Binlog等存储明细。
SELECT HOLOGRES.HG_RELATION_SIZE('schema.table'[, 'type']) ;
使用限制
仅Hologre V2.1及以上版本支持使用该函数。
说明如果您的实例是V2.1以下版本,您可以进行实例升级或加入Hologres钉钉交流群反馈,详情请参见如何获取更多的在线支持?。
参数说明
schema.table:表的Schema名称和表名称。
type:可选,取值说明如下:
data:查看表数据的存储大小。
binlog:查看表Binlog的存储大小。
mv:如果为该表创建了物化视图,查看物化视图占用的存储大小。
all:查看表的总存储量。
示例
以下示例使用通用聚合函数的示例数据。
示例1:查看单表的数据存储。
SELECT HOLOGRES.HG_RELATION_SIZE ('public.example_table', 'data');
示例2:查看单表的Binlog存储大小。
SELECT HOLOGRES.HG_RELATION_SIZE ('public.example_table', 'binlog');
示例3:查看数据库下所有表的存储大小。
SELECT table_schema || '.' || table_name AS table_full_name, pg_size_pretty(hologres.hg_relation_size(quote_ident(table_schema) || '.' || quote_ident(table_name),'data')) AS data_size, hologres.hg_relation_size(quote_ident(table_schema) || '.' || quote_ident(table_name),'data') AS order_size FROM information_schema.tables WHERE table_schema NOT IN ('pg_catalog','information_schema','hologres','hologres_statistic') ORDER BY order_size DESC;
PG_DATABASE_SIZE
描述:查看当前连接的数据库和该数据库下内部表的存储规格大小。
SELECT PG_DATABASE_SIZE('database_name');
参数说明
database_name:必填,当前数据库名称。
返回值说明
返回当前数据库下面所有表的大小和数据库下面产生的WAL(Write-Ahead Log)日志大小。
示例
SELECT PG_SIZE_PRETTY(PG_DATABASE_SIZE(CURRENT_DATABASE()));
PG_RELATION_SIZE
描述:查看表的存储大小。
SELECT PG_RELATION_SIZE('table_name');
PG_RELATION_SIZE
函数统计的是表的存储量,监控指标采集的是实例在整个Pangu目录的文件存储量,Pangu文件包括表的存储量、元数据文件以及因写入、更新、删除产生的临时文件等,因此监控指标的存储量会稍微多于使用PG_RELATION_SIZE
函数查询的结果。使用限制
仅Hologres V1.3.24及以上版本支持使用该函数查看已经开启Hologres Binlog表的Binlog存储量。
说明如果您的实例是V1.3.24以下版本,您可以进行实例升级或加入Hologres钉钉交流群反馈,详情请参见如何获取更多的在线支持?。
仅支持查看内部表的存储规格大小,不支持直接查看分区父表,需要指定分区子表进行查看。
参数说明
table_name:待查看的表名称。
返回值说明
返回的数据为该表此刻的内存所占空间和物理磁盘空间,返回的数据类型为字符串类型。
未指定分区子表,直接查看分区父表,则返回0。
如果查询到表的存储规格大小是0,则返回空值。
示例
以下示例使用通用聚合函数的示例数据。
查看单表存储
--查看单表存储 SELECT PG_SIZE_PRETTY(PG_RELATION_SIZE('example_table'));
查看所有表的存储大小
SELECT table_schema || '.' || table_name AS table_full_name, PG_SIZE_PRETTY(PG_RELATION_SIZE(QUOTE_IDENT(table_schema) || '.' || QUOTE_IDENT(table_name))) AS table_size, PG_RELATION_SIZE(QUOTE_IDENT(table_schema) || '.' || QUOTE_IDENT(table_name)) AS order_size FROM information_schema.tables WHERE table_schema NOT IN ('pg_catalog','information_schema','hologres') ORDER BY order_size DESC;
SET_TABLE_PROPERTY
描述:用于设置表的属性,包括索引、分布列、行存储、列存储以及生命周期等属性。
CALL SET_TABLE_PROPERTY ('table_name', 'property', 'value') WHERE PROPERTY IN orientation clustering_key segment_key bitmap_columns dictionary_encoding_columns time_to_live_in_seconds distribution_key
说明如果您需要对创建的表进行修改、更新和删除,具体操作请参见ALTER TABLE或DROP TABLE。
参数说明
参数
描述
table_name
表名称。您也可以使用Schema限定表名称。
说明表名称只能是小写英文字母
a~z
、大写英文字母A~Z
、数字以及下划线(_)
的组合,并且以字母开头。如果表名称有特殊字符,则需要使用双引号
""
转义。由于系统对大小写不敏感,大写字母A~Z
会被认为是小写字母a~z
。
property
属性名称。
orientation
用于指定数据库的表在Hologres中是列存储、行存储还是行列共存。
说明该参数仅支持和
CREATE TABLE
在同一事务中执行。clustering_key
用于在指定的列建立聚簇索引。
说明该参数仅支持和
CREATE TABLE
在同一事务中执行。segment_key
用于指定某些列作为分段键,例如,指定时间列作为分段键。当查询条件包含分段列时,查询可以通过分段键快速找到相应数据对应的存储位置。
说明该参数仅支持和
CREATE TABLE
在同一事务中执行。bitmap_columns
用于在指定列构建比特编码,快速过滤分段内部的数据。
说明该参数可单独使用数。
dictionary_encoding_columns
用于为指定列的值构建字典映射。
说明字典编码可以转换字符串的比较为数字的比较,加速Group By、Filter等查询。您可以单独使用该参数。
distribution_key
用于指定数据库中表的分布策略。
说明该参数仅支持和
CREATE TABLE
在同一事务中执行。time_to_live_in_seconds
表数据的生命周期,取值为:非负数、整数或浮点数,单位为秒(s)。
说明该参数可单独使用数。
value
属性值,如果该参数包含列名,并且列名包含大写字母,则需要添加双引号
""
。示例
BEGIN; CREATE TABLE ORDERS ( O_ORDERKEY INTEGER NOT NULL, O_CUSTKEY INTEGER NOT NULL, O_ORDERSTATUS TEXT NOT NULL, O_TOTALPRICE DECIMAL(15,2) NOT NULL, O_ORDERDATE DATE NOT NULL, O_ORDERPRIORITY TEXT NOT NULL, O_CLERK TEXT NOT NULL, O_SHIPPRIORITY INTEGER NOT NULL, O_COMMENT TEXT NOT NULL); CALL SET_TABLE_PROPERTY ('ORDERS', 'clustering_key', 'O_ORDERKEY:asc,O_CUSTKEY:asc'); CALL SET_TABLE_PROPERTY ('ORDERS', 'segment_key', 'O_ORDERDATE'); CALL SET_TABLE_PROPERTY ('ORDERS', 'bitmap_columns', 'O_ORDERSTATUS,O_ORDERPRIORITY,O_CLERK,O_SHIPPRIORITY'); CALL SET_TABLE_PROPERTY ('ORDERS', 'dictionary_encoding_columns', 'O_ORDERSTATUS,O_ORDERPRIORITY,O_CLERK,O_SHIPPRIORITY'); CALL SET_TABLE_PROPERTY ('ORDERS', 'time_to_live_in_seconds', '172800'); COMMIT;