1. 程式人生 > 其它 >postgresql查詢分割槽表怎麼查?

postgresql查詢分割槽表怎麼查?

技術標籤:分割槽表列表javaphppostgresql

大家知道 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/