pg_freespacemap 模块提供了一种检查可用空间映射(FSM)的方法。它提供了一个名为 pg_freespace 的函数,或者准确地说,是两个重载的函数。这些函数显示可用空间映射中为给定页面或关系中的所有页面记录的值。
默认情况下,使用权限仅限于超级用户和具有 pg_stat_scan_tables 角色的权限的角色。可以使用 GRANT 将访问权限授予其他人。
可用空间映射中存储的值不是精确的。它们被四舍五入到 BLCKSZ 的 1/256 精度(默认 BLCKSZ 为 32 字节),并且在插入和更新元组时不会完全保持最新。
对于索引,跟踪的是完全未使用的页面,而不是页面内的可用空间。因此,这些值没有意义,只是表示一个页面是满的还是空的。
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)
Mark Kirkwood 的原始版本 <markir@paradise.net.nz>。在 8.4 版本中重写以适应新的FSMHeikki Linnakangas 的实现 <heikki@enterprisedb.com>
如果您在文档中发现任何不正确、与您使用特定功能时的体验不符或需要进一步澄清的内容,请使用此表格报告文档问题。