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文档: 数据库对象大小函数
