PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

F.27. pg_freespacemap — 检查空闲空间映射 #

F.27.1. 函数
F.27.2. 输出示例
F.27.3. 作者

pg_freespacemap 模块提供检查 空闲空间映射(FSM)的手段。确切地说,它提供一个名为 pg_freespace 的函数,即两个重载函数。这些函数显示空闲空间映射中针对给定页面或关系中所有页面记录的值。

默认情况下,使用权限仅限于超级用户以及拥有 pg_stat_scan_tables 角色特权的角色。可以通过 GRANT 将访问权限授予其他用户。

F.27.1. 函数 #

pg_freespace(rel regclass IN, blkno bigint IN) returns int2

根据 FSM 返回关系中由 blkno 指定页面的空闲空间量。

pg_freespace(rel regclass IN, blkno OUT bigint, avail OUT int2)

根据 FSM 显示关系每个页面的空闲空间量。返回一组 (blkno bigint, avail int2) 元组,关系中的每个页面对应一个元组。

空闲空间映射中存储的值并不精确。它们被舍入到 BLCKSZ 的 1/256 的精度(默认 BLCKSZ 下为 32 字节),并且在元组被插入和更新时也不会保持完全实时。

对于索引,被跟踪的是完全未使用的页面,页面内的空闲空间不在跟踪范围内。因此这些值没有实际意义,只有页面是被占用还是为空的区别。

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 编写。8.4 版本中由 Heikki Linnakangas 为新的 FSM 实现进行了重写。