查看数据库表的大小
From PostgreSQL 中文维基, PostgreSQL 中文站, PostgreSQL 中国社区, PostgreSQL Chinese community
- pg_relation_size('关系名') - 查看关系大小
jianingy=# select pg_relation_size('contact');
pg_relation_size
------------------
425984
(1 row)
- pg_size_pretty - human readable的大小输入
jianingy=# select pg_size_pretty(pg_relation_size('contact'));
pg_size_pretty
----------------
416 kB
(1 row)
- 查看所有public schema里面索引大小,大到小的顺序排列
select indexrelname, pg_size_pretty(pg_relation_size(indexrelname))
from pg_stat_user_indexes where
schemaname = 'public' order by pg_relation_size(indexrelname) desc;
- 查看所有public schema里面表的大小,从大到小顺序排里
select relname, pg_size_pretty(pg_relation_size(relname))
from pg_stat_user_tables where
schemaname = 'public' order by pg_relation_size(relname) desc;
- 有些表有toast对象,比如那些有很长的文本字段的表,这个时候,除了主表之外,还有toast表,toast表的命名原则是:
pg_toast.pg_toast_{主表的文件编号}
也就是说,每个存在长字段的表,都拥有一个在 pg_toast 模式内的toast表,命名方式如上,这个时候,我们需要找到主表的文件编号,这个很容易,只要查询一下系统表 pg_class 即可:
select relfilenode from pg_class where relname='你的表名字';
然后,再用 pg_relation_size () 函数查询:
select pg_size_pretty(pg_relation_size('pg_toast.pg_toast_{主表的文件编号}');
即可。
有个工具Oid2name可以用于在命令行上查看这些信息。
