多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 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字节)的精度, 并且它们不保持全部的元组是最新的(插入了和更新了)。 对于索引,跟踪的是完全未使用的页面,而不是页面中的自由空间。因此, 该值是没有意义的,只表示一个页面是否为空。 > **Note:** 接口在版本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](mailto:markir@paradise.net.nz)>`制作的原始版本。 在版本8.4中重写,以适应Heikki Linnakangas `<[heikki@enterprisedb.com](mailto:heikki@enterprisedb.com)>` 制作的新的FSM实现。