PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 附录 F. 额外提供的模块 | 下一页

# F.26. pg_freespacemap

`pg_freespacemap`模块提供一种检查自由空间映射（FSM）的手段。 它提供一个名为`pg_freespace`的函数，或精确的说是两个重载函数。 该函数在一个给定的页面或关系中的所有页面的自由空间映射内显示记录的值。

缺省的公共访问在该函数中取消了，只是因为潜藏的安全问题。

## 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)` 元组，在关系中每个页面一个元组。

存储在自由空间映射中的数据是不精确的。它们圆整到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 `<markir@paradise.net.nz>`制作的原始版本。 在版本8.4中重写，以适应Heikki Linnakangas `<heikki@enterprisedb.com>` 制作的新的FSM实现。

上一页 | 起始页 | 下一页
pgcrypto | 上一级 | pg_prewarm