postgresql 集群、数据库、分区表、非分区表大小

集群大小

select current_setting('cluster_name'),
       sum(pg_database_size(a.oid)) as pg_size,
       pg_size_pretty(sum(pg_database_size(a.oid))) as pg_size_pretty 
  from pg_database a 
;

数据库

select current_setting('cluster_name'),
       a.datname,
       pg_database_size(a.oid) as pg_db_size,
       pg_size_pretty(pg_database_size(a.oid)) as pg_db_size_pretty 
  from pg_database a 
order by 2 desc;

分区表

with tmp_t0 as (
  select pn1.nspname as parent_nspname,pc1.oid as parent_reloid,pc1.relname as parent_relname,
         pn2.nspname as nspname,pc2.oid as reloid,pc2.relname as relname
    from ( select t0.*
             from pg_inherits t0,
                  pg_class t1
             where 1=1
               and t0.inhparent = t1.oid
               and t1.relkind in ('p')
             ) pin
         left outer join pg_class pc1
                         on pin.inhparent = pc1.oid
         left outer join pg_namespace  pn1
                         on pc1.relnamespace = pn1.oid
         left outer join pg_class pc2
                         on pin.inhrelid = pc2.oid
         left outer join pg_namespace  pn2
                         on pc2.relnamespace = pn2.oid
    order by pn1.nspname ,pc1.relname                

)
select current_database() as database_name,
       '分区表' as table_type,
       tt.parent_nspname,
       tt.parent_relname,
       sum(pg_relation_size(tt.reloid)) as relation_size,
       pg_size_pretty(sum(pg_relation_size(tt.reloid))) as relation_size_pretty,
       sum(pg_total_relation_size(tt.reloid)) as total_relation_size,
       pg_size_pretty(sum(pg_total_relation_size(tt.reloid))) as total_relation_size_pretty
  from tmp_t0 tt
where 1=1
and tt.parent_nspname not in (
          'information_schema',
          'pg_catalog',
          'pg_temp_1',
          'pg_toast',
          'pg_toast_temp_1'
       )
group by tt.parent_nspname,tt.parent_relname
order by tt.parent_nspname,tt.parent_relname
;

非分区表

select current_database() as database_name,
       '非分区表' as table_type,
       n.nspname ,
       c.relname ,
       pg_relation_size(c.oid) as relation_size,
       pg_size_pretty(pg_relation_size(c.oid)) as relation_size_pretty,
       pg_total_relation_size(c.oid) as total_relation_size,
       pg_size_pretty(pg_total_relation_size(c.oid)) as total_relation_size_pretty
  from pg_class c
       left join pg_namespace n  on n.oid=c.relnamespace
       left join pg_tablespace t on t.oid=c.reltablespace 
 where 1=1
   and c.relkind in ('r','m','t','f')
   and c.oid not in (
          select distinct inhparent from pg_inherits union all
          select inhrelid from pg_inherits
       )
   and n.nspname not in (
          'information_schema',
          'pg_catalog',
          'pg_temp_1',
          'pg_toast',
          'pg_toast_temp_1'
       )    
order by n.nspname ,
         pg_relation_size(c.oid) desc
;
         
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据库人生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值