# 70.3.自由空间地图

每个堆和索引关系(哈希索引除外)都有一个可用空间映射(FSM),用于跟踪关系中的可用空间。它与主关系数据一起存储在一个单独的关系分支中,以关系的文件节点号命名,并加上_fsm后缀例如,如果关系的filenode是12345,则FSM存储在名为12345_fsm,与主关系文件位于同一目录中。

自由空间地图组织为FSM页面树。底层FSM页面存储每个堆(或索引)页面上的可用空间,使用一个字节表示每个此类页面。上层汇总来自下层的信息。

在每个FSM页面中都有一个二叉树,存储在一个数组中,每个节点有一个字节。每个叶节点代表一个堆页,或一个较低级别的FSM页。在每个非叶节点中,存储其子节点中较高的值。因此,叶节点中的最大值存储在根节点。

看见src/backend/storage/freespace/README有关FSM的结构以及如何更新和搜索的更多详细信息。这个pg_自由空间地图模块可用于检查自由空间地图中存储的信息。