pg_total_relation_size() 是一个系统函数,用于确定关系在磁盘上的总大小,包括数据和所有索引。
pg_total_relation_size() 在 PostgreSQL 8.1 中被添加。
用法
pg_total_relation_size (regclass) →bigint
pg_total_relation_size() 返回 pg_table_size() 和 pg_indexes_size() 对该关系返回值的总和。
如果指定了一个不存在的关系名称,会引发一个 ERROR。
如果提供的 OID 无法映射到现有的关系,则返回 NULL。
调用者在确定表的大小方面不需要任何权限。但是,对表的 ACCESS EXCLUSIVE 锁会导致函数在此锁被释放之前一直阻塞。
变更历史
- PostgreSQL 8.1
- 添加(提交 358a897f)
示例
pg_total_relation_size() 的基本用法示例
postgres=# SELECT pg_size_pretty(pg_total_relation_size('object_property'));
pg_size_pretty
----------------
492 MB
(1 row)
pg_total_relation_size() 返回的值与 pg_table_size() 和 pg_indexes_size() 返回值的总和相同。
appdb=> WITH sizes AS (
SELECT pg_table_size('object_property'),
pg_indexes_size('object_property'),
pg_total_relation_size('object_property')
)
SELECT pg_total_relation_size, pg_table_size + pg_indexes_size
FROM sizes;
pg_total_relation_size | ?column?
------------------------+-----------
515989504 | 515989504
(1 row)
参考资料
- PostgreSQL文档: 数据库对象大小函数
