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
-----------+-----------+-----------+-----------+-----------+-----------+---------------+-----------
17124 | h | 1 | 0 | 1 | 10028 | 0 |
(1 row)pg_partition_tree
僅PolarDB PostgreSQL版Oracle文法相容 2.0支援該系統檢視表。
該函數用於列出分區樹中的表或索引的相關資訊。其入參為表名,返回欄位描述見下。
返回欄位說明
列名 | 描述 |
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 | 目標物件類型,取值如下:
|
relhassubclass | 是否有下級分區,有則為真(True),否則為假(False)。 |
relispartition | 如果表或索引是一個分區,則為真。 |
relpartbound | 如果表示一個分區(見relispartition),分區邊界的內部表達。 |
樣本
SELECT relkind , relhassubclass, relispartition, pg_catalog.pg_get_expr(relpartbound ,oid) AS relpartbound 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。 說明 僅PolarDB PostgreSQL版Oracle文法相容 2.0支援該欄位。 |
inhfinparent | 該分區最上層父表的OID。 說明 僅PolarDB PostgreSQL版Oracle文法相容 2.0支援該欄位。 |
partname | 該分區表在分區結構中的分區名。 說明 僅PolarDB PostgreSQL版Oracle文法相容 2.0支援該欄位。 |
樣本
SELECT * FROM pg_inherits WHERE inhrelid = 19318;
inhrelid | inhparent | inhseqno | inhdetachpending | inhfinparent | partname
----------+-----------+----------+------------------+--------------+----------
19318 | 19192 | 1 | f | 0 |
(1 row)