Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

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.

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

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

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

对于索引,跟踪的是完全未使用的页面,而不是页面内的空闲空间。因此,这些值没有意义,只是用来表示页面已满或为空。

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实现。