超详细的PG数据存储结构:逻辑结构和物理存储总结
IAM的结构与GAM页类似,除IAM头外,剩下空间的每一位(bit)均对应着一个与IAM相关的Extent。若某bit位为1,则表明该bit位所关联的Extent已被分配给该IAM,反之未被分配。若一个IAM页面大小为8K,则除IAM头(64 bytes)外,一个IAM页面所能覆盖的文件范围是: (81024-64)8(88K),约4GB空间。 但与GAM也不同之处在于:IAM的出现位置不固定,只在在创建数据库对象的时候才分配。 三、逻辑与物理存储关系 1、逻辑关系存在表空间; 2、表空间存在对应的数据文件中; 新创建的数据库对应的数据文件的名称: Catalog表空间 – databasename.dbf System表空间 – Udatabasename.dbf Temp表空间-- Tdatabasename.dbf
四、数据库文件、表空间、其他文件之间的关系 1、关系图如下: 说明: 1)每一个数据库具有一个或多个数据文件,用户存放数据库的所有数据。 2)数据库的数据文件有以下特征:
3)数据库对象与文件关系:
4)数据库对象逻辑上是存储在表空间中,物理上是存储在与表空间相关联的数据文件中。 2、数据库包含的文件种类: 1)数据库文件:data/DB 数据库对象,如:数据库、表,索引,序列等对象。 2)控制文件:data/CTL 用来记录数据库集群的状态信息,如:版本信息、集群所管理的各种文件信息、检查点信息、事务状态信息等。 3)日志文件:data/REDOLOG 记录数据修改操作的日志,用于系统发生故障时进行数据恢复。 4)临时文件:data/DB 存放数据库进行计算的过程中,生成的各种中间对象,如排序运算的外存归并单元。 5)参数文件:data目录下 五、Postgresql 底层存储管理方式: Postgresql的每个数据库均存放在一个目录中,以db_oid命名,该目录中存放每个表对应的文件,文件名以该数据表对应的relfilenode_oid命名。当表中的数据量足够大,导致表文件的大小大于1GB的时候,postgresql会自动创建新的文件用于存放新插入的数据。新文件的名称为: relfilenode_iod.1, relfilenode_iod.2 等。使用该策略是为了防止在某些文件系统中,最大支持文件尺寸不能大于1GB的情形。 db_oid, relfilenode_oid可以从pg_class系统表中查询得出。 每个table对应的文件内部又按照Page的方式组织。每个Page的大小默认为8KB。所以每个数据库对应文件的Disk 分布由下图所示: 每个Page中包含Page Header以及Data段,Page Header中,pg_lower指向Free Space的起始地址,pg_upper指向Free Space的结束地址。
【编辑推荐】
点赞 0 (编辑:温州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |