作为一款优秀的开源数据库软件,PostgreSQL非常值得深入学习一下。先总结一下PostgreSQL数据库的存储体系结构。
传统的关系型数据库的存储结构多采用表空间的管理方式,其中涉及到extent,segment,page,file等存储概念。
表空间的管理方式通常有SMS,DMS两种策略,PostgreSQL在改进之后也支持了DMS方式。在oracle,db2中很早就支持了DMS了,在使用oracle的工作过程了对其有了全面了解。DMS不论在OLAP还是OLTP系统中都比SMS的性能有不小的提升,随着OLTP规模不断增大的情况下两者之间的差距显现不大。
在这里只总结一下PostgreSQL的DMS管理方式。
数据文件
PostgreSQL的文件管理方式与oracle的非常相似,每个数据文件的第一块存储文件头信息,第二个块存储文件头的6个文件位图页的日志情况,算起来是从第七个块真正的开始。PostgreSQL的文件头中的位图页表示的是区(extent)的存储情况,而oracle表示的是块的分配情况;PostgreSQL的每个区固定有16个块,oracle更灵活一些。
区
区的概念与oracle相同,连续的若干块组成了区,在PostgreSQL中区中的块数是固定值16。
段
PostgreSQL因为没有undo段,只存在数据段与索引段两种,实质只是段结构不同。PostgreSQL的数据段与oracle相同,采用了自动段空间的管理方式:
1,每个段有一个段头页,也是段的第一个页;
2,每个段中每个区的第一页称为一级位图页;
3,每个段中第一区的第二个页称为二级位图页,其管理着512个一级位图页位置与得使用情况,每个段存在1016个二级位图页;
计算:
512个一级位图页/二级位图页*1016个二级位图页/段=520192个一级位图页。
每个区只有一个一级位图页,就是说每个段共有520192个区。
520192区/段*16块/区*8K/块=63.5GB
文件
文件的分配方式实际有表空间所采用的区分配方式决定。
分配新区:首先通过参数值used_size判断剩余空间是否足够16个块,初始化该区的一级位图页,修改二级位图页,更新段头页与文件头信息。
PostgreSQL的存储策略大致如上,更深入的去学习其存储策略对数据库的维护与性能优化等方面都会带来更大的帮助。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
MongoDB收购Realm数据库以增强移动力量
日前MongoDB公司宣布收购开源数据库供应商Realm公司,以帮助其在日益移动化计算领域提升竞争能力。 Re […]
-
低成本和云选项推动开源RDBMS的部署
随着企业产生越来越多的数据,数据专业人员面临困境:在此过程中数据库账单必须变得更多吗?对此,越来越多注重成本的 […]
-
2017年1月数据库流行度排行榜 新年新气象
新年新气象,数据库知识网站DB-engines最近更新了2017年1月份数据库流行度榜单。TechTarget数据库网站将与您分享1月份的榜单排名情况,让我们拭目以待。
-
2016年12月数据库流行度排行榜 几家欢乐几家愁
在过去的6个月中,数据库排行榜的前二十名总体上没有太大的变动,那么数据库知识网站DB-engines最近更新的2016年12月份数据库流行度排名情况是否一如既往的沉寂、低调呢?