pg_filenode.map

一个文件,用于将内部关系(主要是系统目录表)映射到它们的OID

pg_filenode.map是一个特殊文件,用于将所谓的“映射关系”(即其filenode未存储在pg_class中)映射到它们的OID

pg_filenode.map是在PostgreSQL 9.0中添加的。

每个数据库都有一个pg_filenode.map文件,整个集群也有一个文件。

目前每个pg_filenode.map文件的大小保持为512字节(旨在占用一个标准大小的磁盘扇区),以最大程度地降低更新失败的风险;相应的结构被设计为恰好占用512字节,并且最多可以包含62个8字节的条目(MAX_MAPPINGS

typedef struct RelMapping
{
	Oid			mapoid;			/* OID of a catalog */
	Oid			mapfilenode;	/* its filenode number */
} RelMapping;

文件元数据使总数达到512

typedef struct RelMapFile
{
	int32		magic;			/* always RELMAPPER_FILEMAGIC */
	int32		num_mappings;	/* number of valid RelMapping entries */
	RelMapping	mappings[MAX_MAPPINGS];
	pg_crc32c	crc;			/* CRC of all above */
	int32		pad;			/* to make the struct size be 512 exactly */
} RelMapFile;

有关更多详细信息,请参阅src/backend/utils/cache/relmapper.c

更改历史

示例

pg_filenode.map文件在数据目录中的分布

    postgres:data$ find . -name pg_filenode.map
    ./global/pg_filenode.map
    ./base/1/pg_filenode.map
    ./base/11787/pg_filenode.map
    ./base/11788/pg_filenode.map
    ./base/16385/pg_filenode.map

分类

PostgreSQL内部机制存储

反馈

提交任何关于"pg_filenode.map"的评论、建议或更正 此处