一、前言:
本文通过打开和修改postgresql 数据库中的表文件,理解pg数据库中存储管理之外存管理smgr实现机制。
二、smgr 实现机制
smgr 实现机制如下图所示:
smgr对外封装了各种辅助存储介质的管理,但目前源代码中只实现了磁盘存储器的管理;smgr的接口函数在smgr.c文件中,而其中很多的接口其实是直接调用磁盘存储管理器的操作(md.c),磁盘存储管理器只是对虚拟文件描述符进行操作,而实际对物理文件的操作是通过 fd.c 中的函数实现的。
三、代码实现:每一层的主要数据结构
smgr.c ----> SMgrRelationData
----> SMgrRelation
----> SMgrRelationHash
SMgrRelationData 是最基本的数据结构,表征了一个表文件;
SMgrRel