超详细的PG数据存储结构
|
数据文件, 页面的大小默认是8K。 页面可以分成两种: 1)数据页面:数据页面是用来存储用户数据的。 2)控制页面:控制页面用来管理这些数据页面。 数据库共享缓存中的空间划分也是按页为基本单位, 一个页的大小与数据文件中页的大小一致, 这样便于整页读取数据文件,并放入到数据库Buffer中, 从Buffer写入数据文件也同理,保证了缓存与数据文件结构和内容上的一致性。 3.2、Block(块) 概念上基本等同于Page, 但Block更多用于说明DMS中对数据文件中Page的描述。 例如: 对文件的读写的操作, 文件读写位置的定位, 数据文件空间回收等操作, 单位均是以块进行。 数据块的大小在系统初始化时指定,默认是8K,可以取值4K,8K,16K,32K。 3.3、Extent(区) 把数据文件中8个连续的Page构成的空间称为一个Extent。Extent是数据库进行数据文件空间分配/释放的基本单位。每个表、索引、序列对象都是由若干个区组成。数据文件被创建后,除自动保留部分区作为控制区外,其他区全部处于未分配状态。表、索引、序列对象的所有数据都存放在Extent中,当向这些Extent中插入数据时,若该Extent的所有页面都已占满,系统就会自动在所属表空间的数据文件中寻找一个尚未分配的区,并将其状态修改为数据区。 3.4、控制页面 用于空间管理的控制页面:PFS/GAM/IAM。 用于增量备份的控制页面:DCM。 判断可见性的控制页面:VM。 预留的控制页面:BCM/SGAM。 3.5、PFS Page Free Space,简称PFS页. 用于记录本数据文件中页面的空间使用情况。对文件中的每个页面,PFS中都有一个“字节”与之对应,该字节记录了该页面的状态。 PFS页前64bytes被预留为页头, 剩下81024-64=8128一共覆盖81288K=64MB空间. 故PFS页每隔8128个页面出现一次, 系统初始化把第一个PFS页放在数据文件的第二个页面位置,即:第1号数据页面, 由此可知,第N个PFS页的位置在8128*N+1.bal Allocation Map,简称GAM页。 功能:记录所在数据文件的Extent的分配情况,GAM页中除GAM头外,剩下空间的每一位(bit)均对应一个Extent的分配情况。若某bit位为1,则表明该bit位所关联的Extent已被分配出去,反之未被分配。
若一个GAM页面大小为8K,则除GAM头(64 bytes)外,一个GAM页面所能覆盖的文件范围是: (81024-64)8(88K),约4GB空间。此外,GAM页每隔881288个页面出现一个,系统要求第一个GAM页出现在文件的第3个页面位置(即:第2个索引位置),由此得知,第N个GAM页的出现位置是: 881288*N+2 (编辑:我爱制作网_潮州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


浙公网安备 33038102330565号