全部產品
Search
文件中心

PolarDB:分區表系統檢視表

更新時間:Dec 28, 2024

PolarDB PostgreSQL版(相容Oracle)提供系統檢視表,您可以使用系統檢視表來查看分區表的結構資訊。

PolarDB PostgreSQL版(相容Oracle)提供了以下幾個系統檢視表和系統函數,供您查看資料庫中分區表的相關資訊。

pg_partitioned_table

返回欄位說明

列名

描述

partrelid

分區表pg_class項的OID。

partstrat

分區策略。取值如下:

  • h:雜湊分割表

  • l:列表分區表

  • r:定界分割表

partnatts

分區鍵中的列數。

partdefid

分區表預設分區的pg_class項的OID。如果分區表沒有預設分區,則為零。

partattrs

長度為partnatts的數組,表示哪些表列是分區鍵的組成部分。

例如,值1 3表示第一個和第三個表列組成了分區鍵。這個數組中的零表示對應的分區鍵列是一個運算式而不是簡單的列引用。

partclass

對於分區鍵中的每一列,包含要使用的操作符類的OID。

partcollation

對於分區鍵中的每一列,包含用於分區的定序的OID。如果該列不是一種可排序資料類型,則為零。

partexprs

非簡單列引用的分區鍵列的運算式樹狀架構(nodeToString()運算式)。

這是一個列表,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的值從0開始,表示輸入表或索引作為分區樹的根,1表示其分區,2表示其分區的分區,以此類推。

樣本

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

目標物件類型,取值如下:

  • r:普通表。

  • i:索引。

  • S:序列。

  • t:TOAST表。

  • v:視圖。

  • m:物化視圖。

  • c:組合類別型。

  • f:外部表格。

  • p:分區表。

  • I:分區索引。

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)