すべてのプロダクト
Search
ドキュメントセンター

PolarDB:パーティション分割テーブルのシステムビュー

最終更新日:Jan 23, 2025

PolarDB for PostgreSQL は、パーティションテーブルの構造を表示するためのシステムビューを提供します。

PolarDB for PostgreSQL には、データベース内のパーティションテーブルに関する情報を表示するための次のシステムビューと機能があります。

pg_partitionated_table

説明

partrelid

このパーティション分割テーブルのpg_classエントリのOID。

partstrat

パーティション分割戦略。 有効な値:

  • h: ハッシュ分割テーブル。

  • l: list-partitionedテーブル。

  • r: range-partitioned table.

partnatts

パーティションキーの列数。

partdepfid

このパーティションテーブルのデフォルトパーティションのpg_classエントリのOID。パーティションテーブルにデフォルトパーティションがない場合はゼロ。

partattrs

どのテーブル列がパーティションキーの一部であるかを示すpartnatts値の配列。

たとえば、1 3の値は、1番目と3番目のテーブル列がパーティションキーを構成することを示します。 この配列のゼロは、対応するパーティションキー列が単純な列参照ではなく式であることを示します。

partclass

パーティションキーの各列には、使用する演算子クラスのOIDが含まれています。

partcollation

パーティションキーの各列には、パーティション分割に使用する照合順序のOIDが含まれ、列が照合可能なデータ型でない場合はゼロが含まれます。

partexprs

単純な列参照ではないパーティションキー列の式ツリー (nodeToString()) 。

これは、partattrsのゼロエントリごとに1つの要素を持つリストです。 すべてのパーティションキー列が単純参照の場合、値はnullです。

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 for PostgreSQL 14 クラスターでのみサポートされています。

この関数は、特定のパーティションテーブルまたはパーティションインデックスのパーティションツリー内のテーブルまたはインデックスを、パーティションごとに1行ずつ一覧表示します。 関数の引数はテーブル名です。 次の表に、戻り値の列を示します。

説明

rerid

パーティションの名前。

parentrelid

その直接の親パーティションの名前。 パーティションに直接親パーティションがない場合、このフィールドはnullです。

isleaf

パーティションがリーフパーティションであるかどうか。

level

階層内のパーティションのレベル。 レベル値は、ルートとしての入力テーブルまたはインデックス、その直接の子パーティションの1、およびそのパーティションの2などに0されます。

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 for PostgreSQL クラスター内のテーブル、インデックス、シーケンス、およびその他の同様のオブジェクトに関するメタデータが含まれます。 次の表に、パーティションテーブルに関連するオブジェクトを示します。

カラム

説明

relkind

オブジェクトタイプ。 有効な値:

  • r: コマンドテーブル

  • i: インデックス

  • S: シーケンス

  • t: TOASTテーブル

  • v: 眺め

  • m: マテリアライズド・ビュー

  • c: 合成のタイプ

  • f: 外国のテーブル

  • p: パーティション分割テーブル

  • I: partition index

relhassubclass

テーブルまたはインデックスに継承子またはパーティションがある (またはあった) 場合はTrue

relispartition

テーブルまたはインデックスがパーティションの場合はTrue

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 catalogは、テーブルおよびインデックスの継承階層に関する情報を記録します。 データベース内の直接の親子テーブルまたはインデックス関係ごとに1つのエントリがあります。

説明

inhrelid

パーティションのOID。

inhparent

直接親パーティションのOID。

inhseqno

子テーブルに複数の直接親がある場合 (多重継承) 、この数値は継承された列が配置される順序を示します。 カウントは1から始まる。 インデックスは、宣言型パーティション分割を使用する場合にのみ継承できるため、多重継承はできません。

inhdetachpending

デタッチ中のパーティションの場合はTrueです。

この列は、PolarDB for PostgreSQL 14 クラスターでのみ使用できます。

SELECT * FROM pg_inherits WHERE inhrelid = 17136;
 inhrelid | inhparent | inhseqno | inhdetachpending 
----------+-----------+----------+------------------
    17136 |     17133 |        1 | f
(1 row)