PostgreSQL 取得表table所占空间的大小

本文介绍了如何在PostgreSQL中获取表的行数及所占磁盘空间大小。通过pg_class表的relpages和reltuples字段,结合ANALYZE命令更新统计信息,可以估算表的空间占用。每个block大小为8k,通过relpages除以128转换为MB单位。
摘要由CSDN通过智能技术生成

想知道一个table的行数的话,select count(*) 就可以了。

想要知道各个表占的空间的大小的话,需要知道一行所占空间,再乘以行数。

如果只是大概了解,不需要精确的数据的,可以利用postgre的统计数据。

表 pg_class
・relpages block数

・reltuples  行数

先实行 ANALYZE命令,更新统计数据。

block的大小是8k (查看命令:SHOW block_size)。换算成M的话,一个表所占空间是 relpages / 128Mbytes

 

查看SQL

SELECT relname, reltuples, (relpages / 128) as mbytes, (relpages * 8192.0 / (reltuples + 1e-10)) as average_row_size FROM pg_class ORDER BY mbytes DESC;

结果

      relname       | reltuples | mbytes |     row_size
--------------------+-----------+--------+------------------
 some_table         |     89693 |    210 | 2456.75973866702
 other_table        |     93741 |     52 | 583.844509398135
....

 

再详细一点

SELECT pgn.nspname, relname, pg_size_pretty(relpages::bigint *
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值