简述PostgreSQL存储体系 小块头也有大优点

数据库 其他数据库 PostgreSQL
本文将为大家讨论的是PostgreSQL存储体系,包括它与Oracle的一些小差别以及存储体系的工作原理。

作为一款优秀的开源数据库软件,PostgreSQL非常值得深入学习一下。先总结一下PostgreSQL数据库的存储体系结构。

传统的关系型数据库的存储结构多采用表空间的管理方式,其中涉及到extent,segment,page,file等存储概念。

表空间的管理方式通常有SMS,DMS两种策略,PostgreSQL在改进之后也支持了DMS方式。在oracle,DB 2中很早就支持了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的存储策略大致如上,更深入的去学习其存储策略对数据库的维护与性能优化等方面都会带来更大的帮助。

原文标题:postgresql存储

链接:http://www.cnblogs.com/daduxiong/archive/2010/08/10/1796770.html

【编辑推荐】

  1. PostgreSQL 8.4发布 新增查询监控工具
  2. PostgreSQL新版提高Oracle兼容性 欲与甲骨文试比高?
  3. 细化解析PostgreSQL的昨天今天和明天
  4. PostgreSQL客户端处理事务功能详解
  5. PostgreSQL对决InnoDB 多版本并发控制大比拼
责任编辑:彭凡 来源: 博客园
相关推荐

2012-12-12 13:50:01

台式机小机箱

2012-10-23 18:52:54

酷乐视微型投影机

2018-08-29 11:57:17

分布式存储优点

2020-08-04 10:36:12

云计算云存储技术

2010-10-15 09:26:25

PostgreSQL字

2014-01-02 10:08:35

PostgreSQL优点

2010-04-16 10:05:24

Windows 7内存

2011-05-04 17:41:20

原装耗材优点

2009-12-30 14:15:38

PPPoA体系

2017-09-03 15:41:31

数据库存储分布式

2009-03-30 10:53:37

体系结构数据仓库Oracle

2010-06-30 16:06:28

UML建模优点

2018-09-10 06:00:12

2019-07-17 10:40:13

云存储数据存储

2009-09-24 17:28:29

Hibernate S

2013-08-02 09:47:04

存储虚拟化虚拟化

2022-09-20 14:46:17

PostgreSQL存储工具

2009-12-21 10:47:53

Linux虚拟化

2009-11-26 09:48:36

2021-09-27 10:37:36

人工智能AI深度学习
点赞
收藏

51CTO技术栈公众号