分享一个脚本,PostgreSQL 查看表段大小(包含分区表)及条目数

分享一个脚本,PostgreSQL 查看表段大小(包含分区表)及条目数

select * from  
(select t.relname, (case when r.relkind = 'p' then 'Y' else 'N' end) as partition_YN,
    --pg_size_pretty(pg_relation_size(relid)) as "table_size", 
    pg_relation_size(relid)/1024/1024 as "size_Mb", 
    to_char(r.reltuples,'999999999999999999999') as "table_cnt"
from pg_stat_user_tables t
inner join pg_namespace n 
  on t.schemaname = n.nspname
inner join pg_class r 
    on r.relname = t.relname
    and r.relnamespace = n.oid 
    and r.oid not in (select inhrelid from pg_inherits where inhparent in (select partrelid from pg_partitioned_table))  --排除分区
where t.schemaname='mapr'

union all --查看分区表大小

select t1.relname as parent_tab, (case when t1.relkind = 'p' then 'Y' else 'N' end) as partition_YN,
	sum(pg_table_size(c.oid))/1024/1024 as  "size_Mb", --i.inhparent ,
  to_char(sum(c.reltuples),'999999999999999999999') as "table_cnt"
FROM pg_class t1
join pg_inherits i 
  on t1.oid = i.inhparent
join pg_catalog.pg_class c  --for partition
  on c.oid = i.inhrelid 
where t1.relnamespace = (select oid from pg_namespace where nspname = 'mapr')
  and t1.relkind IN ('r','p')
group by t1.relname,i.inhparent ,t1.relkind 
) tt
order by 3 desc ;

效果如下:
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值