查看数据库表的大小

From PostgreSQL 中文维基, PostgreSQL 中文站, PostgreSQL 中国社区, PostgreSQL Chinese community

Jump to: navigation, search
  • 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可以用于在命令行上查看这些信息。

Personal tools