开发者社区 问答 正文

如何通过SQL查询找到数据库中所有的复制表,并查看它们的大小?

如何通过SQL查询找到数据库中所有的复制表,并查看它们的大小?

展开
收起
花开富贵111 2024-07-24 18:40:47 40 分享 版权
1 条回答
写回答
取消 提交回答
  • 可以使用以下SQL查询来找到数据库中的复制表并查看它们的大小:

    SELECT n.nspname AS "schemaname", 
    c.relname AS "tablename", 
    CASE WHEN p.policytype='r' THEN 'replicated' ELSE 'normal' END AS "distrb_type", 
    pg_size_pretty(pg_relation_size(c.oid)) AS "size" 
    FROM pg_class c 
    LEFT JOIN gp_distribution_policy p ON c.oid = p.localoid 
    LEFT JOIN pg_namespace n ON c.relnamespace = n.oid 
    WHERE n.nspname = 'public' 
    AND c.relkind = 'r' 
    AND p.policytype = 'r' 
    ORDER BY pg_relation_size(c.oid) DESC;
    

    这个查询会列出public模式下所有被标记为复制表(p.policytype='r')的表,并显示它们的大小。

    2024-07-24 20:09:03
    赞同 5 展开评论