postgresql查詢分割槽表怎麼查?
阿新 • • 發佈:2020-12-25
大家知道 PostgreSQL 的分割槽是通過繼承來實現的,按分割槽方式,可以實現表的列表分割槽,範圍分割槽,以及複合分割槽等,本文僅介紹關於
分割槽表的幾個查詢,方便維護和管理分割槽表。
查詢指定分割槽表資訊
SELECT
nmsp_parent.nspname AS parent_schema ,
parent.relname AS parent ,
nmsp_child.nspname AS child ,
child.relname AS child_schema
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
WHERE
parent.relname = 'table_name';
查詢庫中所有分割槽表子表個數
SELECT
nspname ,
relname ,
COUNT(*) AS partition_num
FROM
pg_class c ,
pg_namespace n ,
pg_inherits i
WHERE
c.oid = i.inhparent
AND c.relnamespace = n.oid
AND c.relhassubclass
AND c.relkind = 'r'
GROUP BY 1,2 ORDER BY partition_num DESC;
備註:如果表是分割槽表,那麼相應的 pg_class.relhassubclass 欄位為 ‘t’,否則為 ‘f’,下面是我在生產庫查詢的例子。
備註:第一張表分割槽表子表個數為 940,第二張表分割槽表子表個數為 842,這兩張表為按日分割槽,後面的表為按月分割槽,按月分割槽的表個
數有差異,因為有些錶快到期了,需要擴分割槽,有些分割槽表資料有清理策略,維護時刪除了一些子表。
相關推薦:https://www.py.cn/php/kuangjia/