pg_table_size()

返回关系大小的函数

pg_table_size() 是一个系统函数,用于确定关系(表、索引或物化视图)的磁盘大小。

pg_table_size()PostgreSQL 9.0 中添加。

用法

pg_table_size ( regclass ) → bigint

对于表,报告的大小包括实际表数据、任何 TOAST 表数据、空闲空间映射和可见性映射。任何索引的大小都不包含在总数中。

调用方不需要对关系有任何权限即可确定其大小。但是,表上的 ACCESS EXCLUSIVE 锁将导致函数暂停,直到锁被释放。

使用 pg_total_relation_size() 获取表总大小(包括任何索引);pg_indexes_size() 将返回与表关联的任何索引的总大小。

请注意,此函数的命名有点违反直觉,因为它可以用于检索任何关系的数据,而不仅仅是表。确实存在一个函数 pg_relation_size(),但由于历史原因,它只会报告特定关系 分支 的大小。

源代码

pg_table_size() 的源代码包含在 src/backend/utils/adt/dbsize.c 中;主要工作由 calculate_table_size() 完成。

更改历史记录

示例

pg_table_size() 的基本用法示例

postgres=# SELECT pg_size_pretty(pg_table_size('object_property'));
 pg_size_pretty 
----------------
 475 MB
(1 row)

检索索引的大小

postgres=# SELECT pg_size_pretty(pg_table_size('object_property_pkey'));
 pg_size_pretty 
----------------
 5008 kB
(1 row)

尝试检索不存在的关系的大小

postgres=# SELECT pg_table_size('foo');
ERROR:  relation "foo" does not exist
LINE 1: SELECT pg_table_size('foo');

分类

系统函数

另请参阅

pg_relation_size()pg_total_relation_size()pg_indexes_size()

反馈

提交任何关于 "pg_table_size()" 的评论、建议或更正 在此