PolarDB PostgreSQL版(兼容Oracle)提供了系統視圖,您可以使用系統視圖來查看分區表的結構信息。
PolarDB PostgreSQL版(兼容Oracle)提供了以下幾個系統視圖和系統函數,供您查看數據庫中分區表的相關信息。
pg_partitioned_table
返回字段說明
列名 | 描述 |
partrelid | 分區表pg_class項的OID。 |
partstrat | 分區策略。取值如下:
|
partnatts | 分區鍵中的列數。 |
partdefid | 分區表默認分區的pg_class項的OID。如果分區表沒有默認分區,則為零。 |
partattrs | 長度為partnatts的數組,表示哪些表列是分區鍵的組成部分。 例如,值 |
partclass | 對于分區鍵中的每一列,包含要使用的操作符類的OID。 |
partcollation | 對于分區鍵中的每一列,包含用于分區的排序規則的OID。如果該列不是一種可排序數據類型,則為零。 |
partexprs | 非簡單列引用的分區鍵列的表達式樹( 這是一個列表,partattrs中每一個零項都有一個元素。如果所有分區鍵列都是簡單列引用,則該值為空。 |
示例
select * from pg_partitioned_table;
partrelid | partstrat | partnatts | partdefid | partattrs | partclass | partcollation | partexprs | partnullorder
-----------+-----------+-----------+-----------+-----------+-----------+---------------+-----------+---------------
17124 | h | 1 | 0 | 1 | 10028 | 0 | | 0
(1 row)
pg_partition_tree
該函數用于列出分區樹中的表或索引的相關信息。其入參為表名,返回字段描述見下。
返回字段說明
列名 | 描述 |
relid | 分區名稱。 |
parentrelid | 其直系父分區的名稱。如果沒有,則為空。 |
isleaf | 是否為葉子分區。 |
level | 在層次結構中的級別。level的值從 |
示例
select * from pg_partition_tree('idxpart');
relid | parentrelid | isleaf | level
----------+-------------+--------+-------
idxpart | | f | 0
idxpart0 | idxpart | t | 1
idxpart1 | idxpart | t | 1
(3 rows)
pg_class
pg_class 存放了PolarDB PostgreSQL版(兼容Oracle)中所有的表和索引的對象,其中有一部分信息和分區表有關,下面介紹和分區表有關的字段。
返回字段說明
列名 | 描述 |
relkind | p = 分區表, I = 分區索引 |
relhassubclass | 是否有下級分區,有則為真(True),否則為假(False)。 |
relispartition | 如果表或索引是一個分區,則為真。 |
relpartbound | 如果表示一個分區(見relispartition),分區邊界的內部表達。 |
示例
select relkind , relhassubclass, relispartition, pg_catalog.pg_get_expr(relpartbound ,oid) as relpartbound, relpartname from pg_class where relname = 'sales_q1_2012';
relkind | relhassubclass | relispartition | relpartbound | relpartname
---------+----------------+----------------+------------------------------------------------------+-------------
r | f | t | FOR VALUES FROM (MINVALUE) TO ('01-APR-12 00:00:00') | q1_2012
(1 row)
pg_inherits
pg_inherits記錄有關表繼承層次的信息。數據庫中每個直接父子關系都包含在此系統視圖中。
返回字段說明
列名 | 描述 |
inhrelid | 分區的OID。 |
inhparent | 直系父分區的OID。 |
inhseqno | 分區表默認為1,否則為繼承表。 |
inhdetachpending | true表示正在脫離進程中的分區;否則為false。 |
示例
select * from pg_inherits where inhrelid = 17136;
inhrelid | inhparent | inhseqno
----------+-----------+----------
17136 | 17133 | 1
(1 row)