PostgreSQLパーティションテーブル関連
表9.93 パーティション情報関数
一、pg_partition_tree ( regclass )
- 関数数:pg_partition_tree ( regclass ) → setof Record (relid regclass、
parentrelid regclass、isleaf boolean、level integer ) - 説明: 指定されたパーティション テーブルまたはパーティション インデックスのパーティション ツリー内のテーブルまたはインデックスを、パーティションごとに 1 行でリストします。
提供される情報には、パーティションの OID、その直接の親の OID、パーティションがリーフであるかどうかを示すブール値、および階層内のパーティションのレベルを示す整数が含まれます。
レベル値は、入力テーブルまたはインデックスの場合は 0、その直接のサブパーティションの場合は 1、そのパーティションの場合は 2 などとなります。リレーションが存在しない場合、またはパーティションまたはパーティション テーブルではない場合、行は返されません。
例えば:
select pg_partition_tree('tzq.tzq_test_log_t'::regclass);
または:
select pg_partition_tree(oid)
from pg_class
where relname = 'tzq_test_log_t';
結果:
pg_partition_tree
(tzq.tzq_test_log_t,,f,0)
(tzq.tzq_test_log_t_p1,tzq.tzq_test_log_t,t,1)
(tzq.tzq_test_log_t_p2,tzq.tzq_test_log_t,t,1)
二、pg_partition_ancestors ( regclass )
- 関数: pg_partition_ancestors ( regclass ) → setof regclass
- 説明: 関係自体を含む、指定されたパーティションの祖先関係をリストします。リレーションが存在しない場合、またはパーティションまたはパーティション テーブルではない場合、行は返されません。
例えば:
select pg_partition_ancestors('tzq.tzq_test_log_t_p1'::regclass);
または:
select pg_partition_ancestors(oid)
from pg_class
where relname = 'tzq_test_log_t_p1';
結果:
pg_partition_ancestors
tzq.tzq_test_log_t_p1
tzq.tzq_test_log_t
3、pg_partition_root (regclass)
- 関数: pg_partition_root ( regclass ) → regclass
- 説明: 指定されたリレーションが属するパーティション ツリーの最上位の親ノードを返します。リレーションが存在しない場合、またはパーティションまたはパーティション化されたテーブルではない場合は、NULL を返します。
例えば:
select pg_partition_root('tzq.tzq_test_log_t_p1'::regclass);
または:
select pg_partition_root(oid)
from pg_class
where relname = 'tzq_test_log_t_p1';
結果:
pg_partition_root
tzq.tzq_test_log_t
4. パーティションテーブルに含まれるデータの合計サイズを確認します。
たとえば、パーティション テーブル tzq_test_log_t に含まれるデータの合計サイズを確認するには、次のクエリを使用できます。
SELECT pg_size_pretty(sum(pg_relation_size(relid))) AS total_size
FROM pg_partition_tree('tzq.tzq_test_log_t');