PostgreSQL分区表相关
表9.93.分区信息函数
一、pg_partition_tree ( regclass )
- 函数:pg_partition_tree ( regclass ) → setof record ( relid regclass,
parentrelid regclass, isleaf boolean, level integer ) - 描述:列出给定分区表或分区索引的分区树中的表或索引,每行对应一个分区。
提供的信息包括分区的OID、其直接父的OID、一个布尔值以告知分区是否是叶子,以及一个整数用来告诉分区在层次结构中的级别。
对于输入表或索引,级别值为0,其直接子分区的为1,它们的分区为2,以此类推。 如果关系不存在,或者不是分区或分区表,则不返回行。
例如:
select pg_partition_tree('tzq.tzq_test_log_t'::regclass);
或者:
select pg_partition_tree(oid)
from pg_class
where relname = 'tzq_test_log_t';
结果:
pg_partition_tree
(tzq.tzq_test_log_t,,f,0)
(tzq.tzq_test_log_t_p1,tzq.tzq_test_log_t,t,1)
(tzq.tzq_test_log_t_p2,tzq.tzq_test_log_t,t,1)
二、pg_partition_ancestors ( regclass )
- 函数:pg_partition_ancestors ( regclass ) → setof regclass
- 描述:列出给定分区的祖先关系,包括关系本身。如果关系不存在,或者不是分区或分区表,则不返回行。
例如:
select pg_partition_ancestors('tzq.tzq_test_log_t_p1'::regclass);
或者:
select pg_partition_ancestors(oid)
from pg_class
where relname = 'tzq_test_log_t_p1';
结果:
pg_partition_ancestors
tzq.tzq_test_log_t_p1
tzq.tzq_test_log_t
三、pg_partition_root ( regclass )
- 函数:pg_partition_root ( regclass ) → regclass
- 描述:返回给定关系所属的分区树的最顶级父节点。如果关系不存在,或者不是分区或分区表,则返回NULL。
例如:
select pg_partition_root('tzq.tzq_test_log_t_p1'::regclass);
或者:
select pg_partition_root(oid)
from pg_class
where relname = 'tzq_test_log_t_p1';
结果:
pg_partition_root
tzq.tzq_test_log_t
四、检查分区表中包含的数据的总大小
例如,要检查分区表tzq_test_log_t中包含的数据的总大小,可以使用以下查询:
SELECT pg_size_pretty(sum(pg_relation_size(relid))) AS total_size
FROM pg_partition_tree('tzq.tzq_test_log_t');