58.3. 自由空间映射

每个堆和索引关系,除了哈希索引, 有个自由空间映射(FSM) 来保持跟踪关系中可用的空间。 将同时在独立的关系叉文件存储主关系数据, 以关系的filenode 编号命名,加上一个_fsm后缀。 例如,如果一个关系的filenode是12345, 存储FSM在一个叫12345_fsm的文件里, 在与主关系文件相同目录里。

自由空间映射组织为一个FSM页树。 FSM页底层存储每个堆(或索引)页上可用的自由空间, 使用一个字节来代表每一个如页。 高级别的从低级别聚合信息。

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

参阅src/backend/storage/freespace/README关于更详细的FSM是怎样的结构, 怎样更新和搜索它。pg_freespacemap模块可以用来审查存储在自由空间映射的信息。