更新时间:2024-06-03 GMT+08:00

PG_PARTITION

PG_PARTITION系统表存储数据库内所有分区表(partitioned table)、分区(table partition)和分区索引(index partition)三类对象的信息。分区表索引(partitioned index)的信息不在PG_PARTITION系统表中保存。由于分区表(partitioned table)没有实际的物理文件,所以在pg_partition中不会记录其relfilenode、relpages、reltuples、reltoastrelid、reltoastidxid等信息。

表1 PG_PARTITION字段

名称

类型

描述

oid

oid

行标识符(隐含属性,必须明确选择)。

relname

name

分区表、分区、分区上toast表和分区索引的名称。

parttype

"char"

对象类型:
  • 'r':partitioned table
  • 'p':table partition
  • 's':table subpartition
  • 'x':index partition

parentid

oid

  • 当对象为分区表或分区时,此字段表示分区表在PG_CLASS中的OID。
  • 当对象为二级分区时,此字段表示其一级分区在PG_PARTITION中的OID。
  • 当对象为index partition时,此字段表示所属分区表索引(partitioned index)的OID。

rangenum

integer

保留字段。

intervalnum

integer

保留字段。

partstrategy

"char"

分区表分区策略,现在仅支持:
  • 'r':范围分区。
  • 'i':间隔分区。
  • 'l':list分区。
  • 'a':自动扩展的list分区。
  • 'h':hash分区。
  • 'n':无分区策略,该对象不是表分区。

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

分区索引是否可用。

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号。

relminmxid

xid

冻结多事务ID号。

partitionno

integer

用于维护分区表中的分区Map结构。
  • 当对象为分区时,此字段表示分区ID,从1开始自增。
  • 当对象为分区表时,此字段表示分区ID的最大值,并使用负值来特殊标记,该值会随着部分分区DDL语法不断递增。
  • 当对象为其他类型时,此字段为空值,没有任何含义。

partitionno是一个永久自增列,可以通过语法ALTER TABLE t_name RESET PARTITION命令重置/回收。

subpartitionno

integer

用于维护分区表中的二级分区Map结构。
  • 当对象为二级分区时,此字段表示二级分区ID,从1开始自增。
  • 当对象为二级分区表的一级分区时,此字段表示二级分区ID的最大值,并使用负值来特殊标记,该值会随着部分分区DDL语法不断递增。
  • 当对象为其他类型时,此字段为空值,没有任何含义。

subpartitionno是一个永久自增列,可以通过语法ALTER TABLE t_name RESET PARTITION命令重置/回收。