登录
F.29. pg_freespacemap — 检查空闲空间映射#
pg_freespacemap
模块提供了一种检查空闲空间映射(FSM) 的方法。它提供了一个名为pg_freespace
的函数,或者更确切地说,是两个重载函数。这些函数显示空闲空间映射中记录的给定页面或关系中所有页面的值。
默认情况下,仅限超级用户和具有pg_stat_scan_tables
角色权限的角色使用。可以使用GRANT
向其他人授予访问权限。
F.29.1. 函数#
pg_freespace(rel regclass IN, blkno bigint IN) returns int2
根据 ,返回关系页面上由
blkno
指定的空闲空间量。pg_freespace(rel regclass IN, blkno OUT bigint, avail OUT int2)
根据 ,显示关系中每个页面的空闲空间量。返回一组
(blkno bigint, avail int2)
元组,关系中的每个页面对应一个元组。
存储在空闲空间映射中的值并不精确。它们被舍入到BLCKSZ
的 1/256 精度(使用默认BLCKSZ
时为 32 字节),并且在插入和更新元组时不会完全保持最新状态。
对于索引,跟踪的是完全未使用的页面,而不是页面内的空闲空间。因此,这些值没有意义,只表示页面已满或为空。
F.29.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.29.3. 作者#
原始版本由 Mark Kirkwood<[[email protected]](/cdn-cgi/l/email-protection#c7aaa6b5acaeb587b7a6b5a6a3aeb4a2e9a9a2b3e9a9bd)>
编写。在 8.4 版本中由 Heikki Linnakangas<[[email protected]](/cdn-cgi/l/email-protection#7b131e121010123b1e150f1e090b0912081e1f1955181416)>
重写,以适应新的FSM实现