历史版本。 PostgreSQL 10 已结束支持。 2022-11-10. 请参阅 当前版本手册.
F.27. pg_freespacemap #
pg_freespacemap 模块提供了一种检查空闲空间映射(FSM)的方法。它提供了一个名为 pg_freespace 的函数,更准确地说,是两个重载函数。这些函数显示 FSM 中为给定页面或关系中所有页面记录的值。
默认情况下,只有超级用户以及 pg_stat_scan_tables 角色的成员才能使用。可以使用 GRANT 向其他用户授予访问权限。
F.27.1. 函数
存储在空闲空间映射中的值并不精确。它们会被舍入到 BLCKSZ 的 1/256 精度(在默认 BLCKSZ 下为 32 字节),并且不会随着元组的插入和更新而完全保持最新。
对于索引,被跟踪的是完全未使用的页面,而不是页面内部的空闲空间。因此,这些值本身并无实际意义,只能表明某个页面是满的还是空的。
注意
该接口在 8.4 版中进行了更改,以反映同一版本引入的新 FSM 实现。
F.27.2. 示例输出
postgres=# SELECT * FROM pg_freespace('foo');
blkno | avail
-------+-------
0 | 0
1 | 0
2 | 0
3 | 32
4 | 704
5 | 704
6 | 704
7 | 1216
8 | 704
9 | 704
10 | 704
11 | 704
12 | 704
13 | 704
14 | 704
15 | 704
16 | 704
17 | 704
18 | 704
19 | 3648
(20 rows)
postgres=# SELECT * FROM pg_freespace('foo', 7);
pg_freespace
--------------
1216
(1 row)F.27.3. 作者
最初版本由 Mark Kirkwood <markir@paradise.net.nz> 编写。在 8.4 版中,Heikki Linnakangas <heikki@enterprisedb.com> 为适应新的 FSM 实现对其进行了重写。