【gp數據庫】查詢系統表看模式下所有表的分布鍵信息


Greenplum是關系型的分布式數據庫,需要存儲的數據庫在進入數據庫時,將先進行數據分布的處理工作,講一個表的數據平均分不到每個節點上,並為每個表指定一個分發列(distribute Column),之后根據Hash來分布數據。

 

本篇介紹查詢某模式下所有表的分布鍵信息,適用於:

  1. 排查是否有分布鍵創建不合理的表,如果分布鍵是重復率比較高的字段會造成數據分布不均勻,存儲過於傾斜。
  2. 排查經常做表關聯的表是否是相同分布鍵,這樣會提高執行效率。

  具體sql如下:

SELECT
    aaa.nspname AS "模式名",
    aaa.relname AS "表名",
    aaa.table_comment AS "中文表明",
    ccc.attname AS "分布鍵"
FROM
    (
        SELECT
            aa.oid,
            obj_description (aa.oid) AS table_comment,
            aa.relname,
            bb.localoid,
            bb.attrnums,
            regexp_split_to_table(
                array_to_string(bb.attrnums, ','),
                ','
            ) att,
            dd.nspname
        FROM
            pg_class aa --原數據信息 最重要的表!
        LEFT JOIN gp_distribution_policy bb ON bb.localoid = aa.oid --分布鍵表 
        LEFT JOIN pg_namespace dd ON dd.oid = aa.relnamespace --模式 
        LEFT JOIN pg_inherits hh ON aa.oid = hh.inhrelid --繼承表  
        WHERE
            dd.nspname = 'dim'  -- 替換成需要的模式
        AND hh.inhrelid IS NULL 
    ) aaa
LEFT JOIN pg_attribute ccc ON ccc.attrelid = aaa.oid
AND ccc.attnum = aaa.att
WHERE
    ccc.attnum > 0
ORDER BY
    aaa.relname ;

運行結果:

 

親們如果有更好的sql或者意見歡迎留言!

 

相關文章:gp數據庫】十條實用數據庫SQL優化建議   

修改分布鍵可參考:【gp數據庫】工作中常用SQL語句干貨


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM