2025年9月25日: PostgreSQL 18 发布!
支持的版本: 当前 (18) / 17 / 16 / 15 / 14 / 13
开发版本: devel
不支持的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4

66.3. 空闲空间映射 #

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

空闲空间映射组织成一棵页面(page)树。最低层页面存储每个堆(或索引)页面上的可用空闲空间,使用一个字节表示每个这样的页面。上层则聚合来自下层页面的信息。FSM页面。最低层页面存储每个堆(或索引)页面上的可用空闲空间,使用一个字节表示每个这样的页面。上层则聚合来自下层页面的信息。FSM页面。最低层页面存储每个堆(或索引)页面上的可用空闲空间,使用一个字节表示每个这样的页面。上层则聚合来自下层页面的信息。

每个页面内是一个二叉树,以数组形式存储,每个节点占一个字节。每个叶子节点代表一个堆页面,或者是一个较低层级的页面。在每个非叶子节点中,存储的是其子节点中较大的值。因此,叶子节点中的最大值存储在根节点。FSM页面,代表一个堆页面,或者是一个较低层级的页面。在每个非叶子节点中,存储的是其子节点中较大的值。因此,叶子节点中的最大值存储在根节点。FSM页面。在每个非叶子节点中,存储的是其子节点中较大的值。因此,叶子节点中的最大值存储在根节点。

有关 FSM 的结构、更新和搜索方式的更多详细信息,请参阅 src/backend/storage/freespace/READMEpg_freespacemap 模块可用于检查存储在空闲空间映射中的信息。FSMFSM 的结构,以及如何更新和搜索它。 pg_freespacemap 模块可用于检查存储在空闲空间映射中的信息。

提交更正

如果您在文档中发现任何不正确的内容、与您在使用特定功能时的体验不符的内容,或者需要进一步说明的内容,请使用 此表格 报告文档问题。