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()”的评论、建议或更正,请在此处 提交