pg_indexes_size()
是一个系统函数,用于确定表索引的磁盘总大小。
pg_indexes_size()
在 PostgreSQL 9.0 中添加。
用法
pg_indexes_size (regclass
) →bigint
调用者不需要对表有任何权限即可确定其索引的大小。但是,对表的 ACCESS EXCLUSIVE
锁将导致函数挂起,直到释放锁。
要计算与表关联的数据的总大小(即 pg_table_size()
和 pg_indexes_size()
返回值的累积总和),请使用 pg_total_relation_size()
。
源代码
pg_indexes_size()
的源代码包含在 src/backend/utils/adt/dbsize.c 中;主要工作由 calculate_indexes_size()
执行。
更改历史记录
- PostgreSQL 9.0
- 添加 (提交 4f15699d)
示例
pg_indexes_size()
的基本用法示例
postgres=# SELECT pg_size_pretty(pg_indexes_size('object_property')); pg_size_pretty ---------------- 19 MB (1 row)
请注意,从 PostgreSQL 14 开始,pg_indexes_size()
将接受任何有效关系的名称,而不仅仅是表,在这种情况下,它将始终报告索引大小为 0
postgres=# SELECT pg_indexes_size('object_property_pkey'); pg_indexes_size ----------------- 0 (1 row)
尝试检索不存在的关系的总索引大小
postgres=# SELECT pg_indexes_size('foo'); ERROR: relation "foo" does not exist LINE 1: SELECT pg_indexes_size('foo');;
参考文献
- PostgreSQL 文档: 数据库对象大小函数