千家信息网

POSTGRESQL的底层存储原理是什么

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,今天就跟大家聊聊有关POSTGRESQL的底层存储原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1 从对比来看POSTGRESQL
千家信息网最后更新 2025年02月04日POSTGRESQL的底层存储原理是什么

今天就跟大家聊聊有关POSTGRESQL的底层存储原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

1 从对比来看POSTGRESQL 的数据库(非INSTANCE 那个级别的数据库),SQL SERVER 的DBA 可以和理解 SQL SERVER 对INSTANCE 和数据库的概念一样,不需要费劲,MYSQL 的DBA 也是一样。 ORACLE的DBA 需要理解,这里的数据库就是ORACLE中一堆同样用户下的表的集合,叫数据库。非INSTANCE的那个概念。

下图就是一个POSTGRES QL INSTANCE 中包含的数据库,有一些事自建的,有些是系统的数据库, oid是每个数据库的OBJECT_ID,这点很类似SQL SERVER 中每个对象都有一个OBJECT_ID。

创建一个表company, 这里展示他的表结构,通过查询COMPANY的表结构,发现查询语句的写法的确和PL/SQL 类似,看来SQL SERVER 和MYSQL 在处理表关联是一路的, ORACLE 和 POSTGRES QL 在写表关联是一个思路。

那这个表的实体文件到底存在哪里,

一般一个表会有三个文件,表的数据文件, _FSM _VM 三个文件,组成,FSM 和 VM 和表的数据页面管理,以及数据清除有关。

POSTGRES QL 对用户是比较友好的,例如你要查当前库中的COMPANY表的一些信息,这是其他数据库都做的不足到的。

POSTGRES QL 仅仅需要输入 \dt company,直接将结果就输出了

相对其他数据库要简单的快速方便的多。

通常POSTGRESQL 中每个表是存储在多个固定的 8KB的页面中的,表存储在HEAP的文件中,并且由于页面的组织方式和 ORACLE 有些相似,通过item 指向 数据块的方式,下图画的比较粗糙,实际上POSTGRESQL在每个页面中的设计是很巧妙的。


通过相关函数(POSTGRESQL 默认不按照,自己源码编译,此处不再介绍安装过程)

通过上面的命令我们可以分析POSTGRESQL 的页面基本信息

如果我们想知道这个页面到底有多少空间还可以使用, 使用 UPPER - LOWER 就可以得到我们剩下的空间,并且头部占用 24B 每个 ITEM 占用 4B,由于元祖(data)的长度并非完全一致,所以这里面通过 alignmentpadding 来补齐元祖,提高I/O的性能,一般64位的机器的长度为8K

下面我们继续分析,POSTGRESQL 中的元祖信息(DATA),通过下图

我们可以看到,每一个数据行对应的CTID 和 每一行占用的PAGE中的大小

(SQL SERVER 里面也有类似的函数可以查看,并且一眼就可以看出和 ORACLE, POSTGRESQL 之间的数据页面的组织不同)

大致一行的数据是上面图组成的(画的还是不仔细t-min t-max 少X 应为 t-xmin t-xmax ,见谅)


主要元祖的创建transaction 号 T-XMIN

元祖的删除transaction 号 T-XMAX

CTID

t_hoff 数据偏移量

data 数据组成

未来验证上面的行结构,新建一个表 varchar(8000) ,并且大量输入字符,见下面的图,大家可以很清楚的查看,页中的truple(元祖的)偏移量和占用的空间

POSTGRES QL ,在数据存储底层设计上,和ORACLE 基本相似,并且也是堆表进行数据的存储,这在很大一方面验证了,这样的底层设计有利于大数据的处理,也验证了部分最近很大一部分机构和企业的在 ORACLE 转型中,选择POSTGRES QL 来代替 ORACLE 数据库的可行性。

看完上述内容,你们对POSTGRESQL的底层存储原理是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

数据 数据库 页面 存储 元祖 文件 底层 信息 内容 空间 结构 面的 设计 验证 原理 很大 相似 一行 三个 下图 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 四大国产数据库 迁安软件开发品质保障 网络技术维护工作是什么专业 腾讯云几台服务器怎么做集群 英雄联盟无法连接服务器请检查网络 软件开发概论 网络安全教育主题班会简报大学生 量化管理软件开发 一体式服务器柜机 网络安全攻防演练组织方案 魔兽世界哪个服务器副本环境好 数据库关系中的主属性指 网络安全十大建议 电脑数据库丢了怎么找回来 熟悉数据结构及数据库原理 可信软件开发能力认证考试 微信小程序要服务器空间运行吗 服务器没有显卡怎么进桌面 川大数据库技术第二次作业 迪鹿互联网科技有限公司 软件开发报价问题 服务器冗余电源作用 传奇服务器如何关闭内挂 如何设置wifi网络安全性 服务器芯片怎么设置 网络安全法规定转发谣言 服务器安装安全狗支付出错 网络安全英文缩写 东升科技互联网平台 手机视频服务器教学
0