海山数据库(He3DB)源码详解:海山PG 表和元组的组织方式(1)

海山数据库(He3DB)数据仓库发展历史与架构演进:(三)云数仓 数据仓库的演进变革的因素有很多,例如快速的业务模式与群体规模的数据量带来的大数据处理技术、互联网的发展带来的数据源及数据类型的增多、人工智能的发展带来数智的融合、云计算交付模式的出现需要的细粒度的资源管理与隔离等,业务实时性的要求等都会带来数据仓库架构的变化。传统数仓将计算与存储部署在同一个节点,集群的扩容复杂,需要进行数据的迁移,同时架构存在木桶效应,单节点故障会影响整体的性能,且资源管理不灵活,无法满足不同场景下资源隔离及动态调整的需求。,这些产品之间的功能基本相同,只是在技术细节的实现各有不同。 阅读详情

海山数据库(He3DB)源码详解:海山PG 表和元组的组织方式(1)

一、概述

PostgreSQL是一种开源的关系型数据库管理系统,具有强大的功能和可靠性。在PostgreSQL数据库中,表和元组是数据组织的基础单元。其中,表是PG数据库中存储数据的逻辑结构,由多个列(Column)和行(Row)组成。列代表了数据字段,而行则代表了一条条的数据记录。每个表都有其独特的属性,如主键(Primary Key)、外键(Foreign Key)、索引(Index)等。主键用于唯一标识表中的一条记录,外键用于建立表与表之间的关联,索引则用于提高查询效率。在PostgreSQL中,元组通常指的是表中的一行数据,即一条记录。元组包含了该记录在表中所有字段的值,这些字段值对应于表中的列。每个字段值都有其特定的数据类型,如整数、浮点数、字符串等。在物理存储上,元组被存储在表文件的页(Page)中。每个页包含了多个元组,并且这些元组按照创建顺序或特定的存储策略被组织在一起。
在PostgreSQL中,一个表中的元组按照创建顺序依次插入到表文件中。这样的表文件即堆文件,按照功能可分为四类。而其中的元组数据信息主要通过设计的元组头部信息来进行多版本并发控制、数据可见性判断等操作。

二、表和元组的组织方式

PostgreSQL中的表和元组通过特定的组织方式来提高存储效率和查询性能。

在这里插入图片描述

1、堆文件组织:

  • PostgreSQL使用堆文件(Heap File)来存储表数据。堆文件是一种无序的数据存储结构,其中的元组按照创建顺序或VACUUM操作后的空闲空间顺序被插入。
  • 堆文件由多个页组成,每个页包含了多个元组。页的大小通常是固定的(如8KB),并且页内元组的存储顺序是连续的。
    为了管理页内的空闲空间,PostgreSQL为每个页维护了一个页头(Page Header),其中包含了关于页的一般信息,如空闲空间指针、特殊空间指针等。

2、行指针和索引:

  • 在堆文件中,每个元组都通过行指针(Item Pointer)来定位。行指针包含了元组在页内的偏移量和长度信息,使得系统能够快速找到并访问元组。
  • 为了提高查询效率,PostgreSQL还支持索引机制。索引是一种特殊的数据结构,用于存储表中元组的键值对,并允许系统根据键值快速定位元组。

3、存储管理:

  • PostgreSQL的存储管理由SMGR(Storage Manager)提供统一接口。SMGR负责处理表的物理存储,包括文件的创建、读取、写入和删除等操作。
  • 为了优化存储性能,PostgreSQL还采用了空闲空间映射表(FSM)和可见性文件映射表(VM)等机制来管理页内的空闲空间和元组的可见性。

4、特殊堆文件:

  • 除了普通的堆文件外,PostgreSQL还支持其他类型的堆文件,如临时堆、序列堆和TOAST表等。这些特殊堆文件在功能和用途上有所不同,但底层文件结构却与普通堆文件相似。

三、数据结构设计

1、页面头部——HeapTupleHeaderData

Page头定义在PageHe

海山数据库(He3DB)原理剖析:浅析OLAP数据库计算引擎中的统计信息 张步涛,中国移动云能力中心数据库产品部-OLAP数据库开发工程师。主要参与OLAP内核研发/湖仓一体研发相关工作。 阅读详情

相关推荐

海山数据库(He3DB)源码详解:海山PG 空闲空间映射表FSM

FSM文件是Free Space Map(空闲空间映射)的缩写,用于跟踪和记录数据块(Page)中的空闲空间。随着数据表不断进行插入、更新和删除元组等操作,数据页内必然会存在空页空间。在插入新的元组时,有两种方式可以选择:直接选择新的页来存放、存放到已有页的空闲空间中。如果采用第一种存放方式,会明显造成空间利用率的浪费;

weixin_42744640的博客 932

海山数据库(He3DB)源码详解:海山PG 可见性映射表VM

He3DB for PG中为了实现多版本并发控制,当事务删除或更新元组时,并非从物理上删除,而是将其标记为无效的方式进行标记删除,最终对这些无效元组的清理操作需要调用VACUUM完成。为了能够加快VACUUM查找包含无效元组的文件块的过程,在PostgreSQL8.4.1中为每个表文件定义了一个新的附属文件–可见性映射表(VM)。VM中为表的每个文件块设置了一位,用来标记该文件块是否存在无效元组。

weixin_42744640的博客 1095

海山数据库(He3DB)源码详解:主备复制start过程

在数据库主备复制(如PostgreSQL的流复制等场景)中,基础备份是建立主备数据库一致性的初始备份。它是一个数据库在某个时间点的完整副本,包含了数据库的数据文件、目录结构等所有用于恢复数据库到该时间点状态的必要信息。周雨慧 中移(苏州)软件技术有限公司 数据库内核开发工程师。

yang123456213的博客 1058

海山数据库(He3DB)源码解读:海山PG 词法、语法分析

查询分析中词法分析和语法分析分别借助词法分析工具Lex和语法分析工具 Yacc来完成各自的工作。exec_simple_query函数(在src/backend/tcop/postgres.c下)调用函数pg_parse_query进入词法分析和语法分析的主过程,函数pg_parse_query再调用词法分析和语法分析的入口函数raw_parser生成分析树;函数pg_parse_query返回分析树(raw_parsetree_list)给exec_simple_query;

weixin_42744640的博客 1160

【R语言】富集分析可视化代码(整理版)

分别介绍了如何使用DAVID在线分析工具对基因进行GO/KEGG功能富集分析、使用R ggplot包对获得的基因GO/KEGG功能富集结果进行可视化、使用R clusterProfiler包和R AnnotationHub包对基因进行GO/KEGG功能富集分析、OrgDb包制作以及结果可视化等。故,我重新整理了一波,并补充了可对多个分组的富集结果进行可视化以及富集结果绘制圈图等的代码。关注“在打豆豆的小潘学长”公众号,发送“富集分析3”获得完整代码包和演示数据。一、单组富集结果可视化。

weixin_54004950的博客 1万+

H3C-V7防火墙配置SSL VPN IP资源典型案例(华三)

H3C-V7防火墙配置SSL VPN IP资源典型案例(华三)

m0_68265458的博客 5170

LC-3 机器语言 指令集

生活本就沉闷,但跑起来就有风

笔记 1万+

通信算法之283:大疆DJI云哨系统-DJI DroneID物理层协议-解速率匹配及Turbo译码

3. 完整云哨接收机,接收灵敏度。交流: 1279682290 ,2. Turbo译码模块。1. 解速率匹配模块。

leegang12的专栏 868

(王道408考研操作系统)第一章计算机系统概述-第三节2:中断和异常

注意!!! 本节内容和《计算机组成原理》中的中断有重合,如果需要详细了解的话可以点击链接跳转:(计算机组成原理)第七章输入和输出系统-第四节2:I/O方式之程序中断方式 为了内容完整,部分内容会借用上述文章 文章目录一:中断和异常的基本概念(1)中断和异常的定义 一:中断和异常的基本概念 在操作系统引入核心态和用户态这两种工作状态后,就需要考虑两种状态之间是如何切换的。 操作系统内核工作在核心态,用户程序工作在用户态,系统不允许用户程序使用核心态的功能,但是用户程序为了完成某些操作又必须使用这些功能

快乐江湖的博客 3533

用 CL_HTTP_CLIENT 正确处理 Cookie,彻底解决 SAP Gateway OData 的 CSRF Token 校验失败

SAP OData 集成中 CSRF Token 校验失败的解决方案 问题现象:使用 Postman 测试 OData 写入成功,但 ABAP 代码调用时出现 CSRF token validation failed 错误。 根本原因:Postman 自动处理 Cookie,而 ABAP 代码仅获取了 CSRF Token 却遗漏了 Cookie 信息。SAP Gateway 要求修改请求必须同时携带 Token 和 Cookie 才能通过校验。 解决方案: 通过 GET 请求同时获取 CSRF Token

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 433

【图像拼接(Image Stitching)】关于【图像拼接论文精读】专栏的相关说明,包含专栏使用方法、阅读顺序、创新思路、文章汇总、源码汇总、数据集汇总等。总之,【图像拼接论文相关】看这一篇就够了

为什么会有这篇文章?因为专栏简介里写不下太多东西,只能通过这篇文章和大家交流,算是一个专栏阅读指南吧。说点心里话本来吧,我只想用优快云来记录自己学习【图像拼接】领域论文的过程,对每篇文章有个细致的理解,方便自己反复查阅。设置为付费也是因为涉及论文和本人其他项目需要,防止查重和其他问题,所以价格最开始设置的是专栏付费价格里最高的。起初,确实没有人看,一切也都平淡地度过着。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 4万+

【数据集8】全球人口数据WorldPop详解

全球人口数据WorldPop详解

WW、forever的博客 7882

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: 海山数据库(He3DB)源码详解:海山Mysql 自动测试框架MTR
下一篇: 海山数据库(He3DB)源码详解:海山PG 表和元组的组织方式(2)
He3DB_ht
博客等级 码龄3年 1000粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值