PostgreSQL数据库存储体系结构总结

日期: 2010-08-23 作者:daduxiong 来源:TechTarget中国 英文

  作为一款优秀的开源数据库软件,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

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐