PostgreSQL 9.3.1 中文手册 | ||||
---|---|---|---|---|
上一页 | 上一级 | 章 58. 数据库物理存储 | 下一页 |
每个堆和索引关系,除了哈希索引, 都有一个空闲空间映射(FSM) 来跟踪关系中的可用空间。 FSM文件与关系的主数据文件放置在一起,有一个单独的分支与之对应, 以关系的filenode 值,加一个_fsm后缀来命名。 例如,如果一个关系的filenode是12345, 其FSM将存储在一个名为12345_fsm的文件中, 与主关系文件在相同的目录中。
空闲空间映射被组织为一个FSM页树。 底层的FSM页存储每个堆(或索引)页上可用的空闲空间, 使用一个字节来表示。 高层的页从底层的页中聚合信息。
每个FSM页是一个二叉树,存储在一个数组中, 数组中每个节点对应一个字节。每个叶节点代表一个堆页,或低级别的FSM页。 在每个非叶节点中,存储其所有孩子中最大的值。 因此叶节点中最大的值存储在根节点中。
参阅src/backend/storage/freespace/README了解FSM结构的详细信息, 以及更新和搜索策略。pg_freespacemap模块可以用来检测存储在空闲空间映射中的信息。