PostgreSQL 파티션 테이블 관련
표 9.93 파티션 정보 기능
一、pg_partition_tree( regclass )
- 예: pg_partition_tree ( regclass ) → setof record ( relid regclass,
parentrelid regclass, isleaf boolean, level integer ) - 설명: 지정된 분할 테이블 또는 분할 인덱스의 파티션 트리에 있는 테이블 또는 인덱스를 각 파티션에 대해 한 행씩 나열합니다.
제공된 정보에는 파티션의 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
三、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');