Postgresql 中文操作指南
73.3. Free Space Map #
除了哈希索引外,每个堆和索引关系都具有一个空闲空间映射 (FSM),用于跟踪关系中的可用空间。它与主关系数据一起存储在单独的关系分支中,该分支以关系的文件节点号命名,外加一个 _fsm 后缀。例如,如果某个关系的文件节点为 12345,则 FSM 存储在名为 12345_fsm 的文件中,与主关系文件位于同一个目录中。
空闲空间映射组织为一个 FSM 页面树。底层 FSM 页面使用一个字节表示每个堆(或索引)页面上的可用空间,以存储这些页面中的可用空间。上层汇总下层的相关信息。
在每个 FSM 页面中,都会有一个二叉树,该二叉树存储在一个数组中,每个节点一个字节。每个叶节点表示一个堆页面或一个较低级别的 FSM 页面。在每个非叶节点中,存储的是其子节点的较大值。叶节点中的最大值因此存储在根节点中。
有关 FSM 如何构建及其如何更新和搜索的更多详细信息,请参阅 src/backend/storage/freespace/README。 pg_freespacemap模块可用于检查存储在空闲空间映射中的信息。