监控物理存储消耗并定位大表与表膨胀的核心内置统计函数包括:
pg_database_size(oid/name):返回指定数据库占用的总物理磁盘字节数。
pg_relation_size(regclass):返回指定数据表本身的主分叉物理数据文件大小(不包含索引与 TOAST 表)。
pg_total_relation_size(regclass):返回数据表及其所有关联索引、TOAST 大对象表在磁盘上占用的真实总存储空间。
pg_size_pretty(bigint):将枯燥的纯字节数值自动转换为人类友好的易读格式(如 18 GB、256 MB)。
查询全库占用磁盘空间排名前五的最大表及索引的经典示例:
SELECT relname,
pg_size_pretty(pg_total_relation_size(c.oid)) AS total_size
FROM pg_class c
LEFT JOIN pg_namespace n ON (n.oid = c.relnamespace)
WHERE n.nspname NOT IN ('pg_catalog', 'information_schema')
AND c.relkind IN ('r', 'm')
ORDER BY pg_total_relation_size(c.oid) DESC
LIMIT 5;