PG_PARTITION
PG_PARTITION系统表存储数据库内所有分区表(partitioned table)、分区(table partition)、分区上toast表和分区索引(index partition)四类对象的信息。分区表索引(partitioned index)的信息不在PG_PARTITION系统表中保存。
名称 | 类型 | 描述 | ||
|---|---|---|---|---|
relname | name | 分区表、分区、分区上toast表和分区索引的名称。 | ||
parttype | "char" | 对象类型:
| ||
parentid | oid | 当对象为分区表或分区时,此字段表示分区表在PG_CLASS中的OID。 当对象为index partition时,此字段表示所属分区表索引(partitioned index)的OID。 | ||
rangenum | integer | 保留字段。 | ||
intervalnum | integer | 保留字段。 | ||
partstrategy | "char" | 分区表分区策略,现仅支持: 'r':范围分区。 'v':数值分区。 'l':列表分区。 | ||
relfilenode | oid | table partition、index partition、分区上toast表的物理存储位置。 | ||
reltablespace | oid | table partition、index partition、分区上toast表所属表空间的OID。 | ||
relpages | double precision | 统计信息:table partition、index partition的数据页数量。 | ||
reltuples | double precision | 统计信息:table partition、index partition的元组数。 | ||
relallvisible | integer | 统计信息:table partition、index partition的可见数据页数。 | ||
reltoastrelid | oid | table partition所对应toast表的OID。 | ||
reltoastidxid | oid | table partition所对应toast表的索引的OID。 | ||
indextblid | oid | index partition对应table partition的OID。 | ||
indisusable | boolean | 分区索引是否可用。 | ||
reldeltarelid | oid | Delta表的OID。 | ||
reldeltaidx | oid | Delta表的索引表的OID。 | ||
relcudescrelid | oid | CU描述表的OID。 | ||
relcudescidx | oid | CU描述表的索引表的OID。 | ||
relfrozenxid | xid32 | 冻结事务ID号。 为保持前向兼容,保留此字段,新增relfrozenxid64用于记录此信息。 | ||
intspnum | integer | 间隔分区所属表空间的个数。 | ||
partkey | int2vector | 分区键的列号。 | ||
intervaltablespace | oidvector | 间隔分区所属的表空间,间隔分区以round-robin方式落在这些表空间内。 | ||
interval | text[] | 间隔分区的间隔值。 | ||
boundaries | text[] | 范围分区和间隔分区的上边界。 | ||
transit | text[] | 间隔分区的跳转点。 | ||
reloptions | text[] | 设置partition的存储属性,与pg_class.reloptions的形态一样,用"keyword=value"格式的字符串来表示 ,目前用于在线扩容的信息搜集。 | ||
relfrozenxid64 | xid | 冻结事务ID号。 | ||
boundexprs | pg_node_tree | 分区边界表达式。
pg_node_tree数据类型是不可读的,可用如下表达式pg_get_expr把当前字段转换为可读信息。
| ||
relmetaversion | xid | 元数据版本信息,该字段仅9.1.0及以上集群版本支持。 |
应用示例
查询分区表web_returns_p2的分区信息。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | CREATE TABLE web_returns_p2 ( wr_returned_date_sk integer, wr_returned_time_sk integer, wr_item_sk integer NOT NULL, wr_refunded_customer_sk integer ) WITH (orientation = column) DISTRIBUTE BY HASH (wr_item_sk) PARTITION BY RANGE(wr_returned_date_sk) ( PARTITION p2016 START(20161231) END(20191231) EVERY(10000), PARTITION p0 END(maxvalue) ); SELECT oid FROM pg_class WHERE relname ='web_returns_p2'; oid ------- 97628 SELECT relname,parttype,parentid,boundaries FROM pg_partition WHERE parentid = '97628'; relname | parttype | parentid | boundaries ----------------+----------+----------+------------ web_returns_p2 | r | 97628 | p2016_0 | p | 97628 | {20161231} p2016_1 | p | 97628 | {20171231} p2016_2 | p | 97628 | {20181231} p2016_3 | p | 97628 | {20191231} p0 | p | 97628 | {NULL} (6 rows) |

