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

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

最終更新日:May 13, 2025

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

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

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 (Compatible with Oracle) 2.0クラスターでのみサポートされています。

この関数は、特定のパーティションテーブルまたはパーティションインデックスのパーティションツリー内のテーブルまたはインデックスを、パーティションごとに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 (Compatible with Oracle) クラスター内のテーブル、インデックス、シーケンス、およびその他の同様のオブジェクトに関するメタデータが含まれます。 次の表に、パーティションテーブルに関連するオブジェクトを示します。

カラム

説明

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 (Oracle互換) 2.0クラスターでのみ使用できます。

inhfinparent

このパーティションの最上位レベルの親テーブルのOID。

説明

この列は、 PolarDB for PostgreSQL (Oracle互換) 2.0クラスターでのみ使用できます。

部分名

パーティション構造内のパーティションの名前。

説明

この列は、 PolarDB for PostgreSQL (Oracle互換) 2.0クラスターでのみ使用できます。

SELECT * FROM pg_inherits WHERE inhrelid = 19318;
 inhrelid | inhparent | inhseqno | inhdetachpending | inhfinparent | partname 
----------+-----------+----------+------------------+--------------+----------
    19318 |     19192 |        1 | f                |            0 | 
(1 row)