檢查pg中所有分區表

pg 10由於沒有hash分區,而pg_pathman一直都是支持多種分區的。所以如果某些pg 11以前的系統,可能會混合部署pg原生分區和pg_pathman。要檢查這種混合部署環境中的分區情況,可以用下面的sql:

select b.parent::text as part_table,
     'native partition' as part_tool,
CASE WHEN a.partstrat='r' THEN 'range'
     WHEN a.partstrat='l' THEN 'list'
     WHEN a.partstrat='h' THEN 'hash'
     ELSE 'other'
     END as part_type,
     b.cnt as part_cnt
from
pg_partitioned_table a,
(SELECT
    parent.oid,
    parent.relname          AS parent,
    COUNT(*) as cnt
FROM pg_inherits
    JOIN pg_class parent                 ON pg_inherits.inhparent = parent.oid
    JOIN pg_class child                  ON pg_inherits.inhrelid   = child.oid
    JOIN pg_namespace nmsp_parent        ON nmsp_parent.oid  = parent.relnamespace
    JOIN pg_namespace nmsp_child         ON nmsp_child.oid   = child.relnamespace
GROUP BY  oid,parent) b
where a.partrelid=b.oid
union all
select
     parent::text,
     'pg_pathman',
CASE WHEN parttype=1 THEN 'hash'
     WHEN parttype=2 THEN 'range'
     ELSE 'other'
END ,
count(*)
from pathman_partition_list
group by parent,parttype;

顯示結果如下:

      part_table       |    part_tool     | part_type | part_cnt
-----------------------+------------------+-----------+----------
mytabaa1_kkj_dbddak   | native partition | range     |        7
kkj_dbddak            | native partition | range     |       59
drop_sgs_djaygsrf_bak | native partition | range     |        9
sgs_djaygsrf          | pg_pathman       | hash      |     1024
mumybaad_sgs_djaygsrf | pg_pathman       | hash      |      128
(5 rows)

可以看到有5個partition table,3個是native partition,2個是用pg_pathman,並且還可以看到分區的類型,和分區數量。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章