↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3
历史版本。 PostgreSQL 11 已结束支持。 2023-11-09. 请参阅 当前版本手册.

F.26. pg_freespacemap #

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

默认情况下,只有超级用户以及 pg_stat_scan_tables 角色的成员才能使用。可以使用 GRANT 向其他用户授予访问权限。

F.26.1. 函数

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

返回该关系中由 blkno 指定页面上按 FSM 记录的空闲空间量。

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

显示该关系中每个页面上按 FSM 记录的空闲空间量。返回一组(blkno bigint, avail int2) 元组,其中关系中的每个页面对应一个元组。

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

对于索引,被跟踪的是完全未使用的页面,而不是页面内部的空闲空间。因此,这些值本身并无实际意义,只能表明某个页面是满的还是空的。

注意

该接口在 8.4 版中进行了更改,以反映同一版本引入的新 FSM 实现。

F.26.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.26.3. 作者

最初版本由 Mark Kirkwood 编写。在 8.4 版中,Heikki Linnakangas 为适应新的 FSM 实现对其进行了重写。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.