超详细的PG数据存储结构:逻辑结构和物理存储总结
副问题[/!--empirenews.page--]
概述 本日首要讲讲PG的数据布局,PG数据存储布局分为:逻辑布局和物理存储。 个中逻辑存储布局是内部的组织和打点数据的方法。物理存储布局是操纵体系中组织和打点数据的方法。逻辑存储布局合用于差异的操纵体系和硬件平台。 一、逻辑存储布局 逻辑布局包罗: ![]() 全部数据库工具都有各自的oid(object identifiers),oid是一个无标记的四字节整数,相干工具的oid都存放在相干的system catalog表中,好比数据库的oid和表的oid别离存放在pg_database,pg_class表中。 1、数据库集群-Database cluster 2、数据库-Database 3、表空间-tablespace 数据库在逻辑上分成多个存储单位,称作表空间。表空间用作把逻辑上相干的布局放在一路。数据库逻辑上是由一个或多个表空间构成。 新建设的数据库默认建设下面的表空间: 1)Catalog表空间 存放体系表信息 2)System表空间 存放用户数据3)Temp表空间 4、模式-Schema 自动建设的体系模式如下: 1)PG_CATALOG 2)PG_LARGEOBJECT 3)PG_TOAST 4)PG_PARTITION 默认的用户模式PUBLIC。 5、段-segment 6、区-extent 7、块-block 8、数据库工具-Database object 1)模式工具表、索引、序列、大工具、视图、函数、存储进程、触发器、包 … … 2)非模式工具用户、数据库 9、数据表-Table 10、索引-Index 11、序列-Sequence 12、视图-View 二、物理存储布局 在执行initdb的时辰会初始化一个目次,凡是我们城市在体系设置相干的情形变量$PGDATA来暗示,初始化完成后,会再这个目次天生相干的子目次以及一些文件。在postgresql中,tablespace的观念并差异于其他相关型数据库,这里一个tablespace对应的都是一个目次。如下图就是PG的物理布局: ![]() 1、存储体系首要包罗三个部门: 内存中:buffer,MemoryContext; 数据文件,姑且文件; 日记文件,日记缓存。 2、文件和目次相干浸染描写: ![]() ![]() 3、数据文件布局 ![]() 3.1、页 ![]() 将数据文件中的空间从逻辑上分别成一个个页面(数据块)。页面是数据库I/O的根基单元,即只能整页读写数据文件, 页面的巨细默认是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. ![]() 3.6、GAM Global Allocation Map,简称GAM页。 成果:记录地址数据文件的Extent的分派环境,GAM页中除GAM头外,剩下空间的每一位(bit)均对应一个Extent的分派环境。若某bit位为1,则表白该bit位所关联的Extent已被分派出去,反之未被分派。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |