PG数据文件和块管理与Oracle比较

news2024/12/28 19:27:19

之前有说过PG数据库中的对象oid与数据文件一一对应,创建的数据库如果没有指定表空间,则会默认放在默认表空间中,例如:

1.对象OID与数据文件对应关系

Oracle的逻辑与物理对应关系如下:

两种结果相比较而言:
oracle的数据文件保存在表空间中,oracle表空间在创建时空间已经分配好,如果表在该表空间所在的数据文件中创建,数据文件就会分配块给这个表,如果表被删除(特指truncate操作),分配给这个表的块会被回收,还给数据文件。
PG的数据文件保存在文件系统中,OID与数据文件一一对应,PG省去了回收操作,在进行truncate操作的时候,PG会删掉原来的数据文件,再创建一个新的数据文件,因为这样会更快。
所以 oid号与relfilenode号不一定相同,如果不同,证明该表之前进行过truncate操作。

2.更快的定位数据文件所在物理位置

使用内置函数pg_relation_file_path

3.相关联的其它数据文件

可以看到,表空间中的数据文件还有以_fsm和_vm的文件

1.13433:真正的数据存放的位置。
2.13433_fsm:空闲空间地图(free space map),记录了这个表可用空间的记录情况。
学过oracle的肯定能理解,类似于oracle的自动段空间管理(ASSM),在oracle中,如果表空间是自动管理的,则会用到位图管理机制(BMB),给段分配很多数据块,oracle会拿出一些数据块来记录这些数据块的使用情况,这些数据块叫做:BMB(位图块),之前有写过相关博客。
Oracle 如何提高空间使用率?-CSDN博客
3.13433_vm:可见性地图(vacuum),当进行vacuum操作时可见性地图文件用来提高操作的效率。

相关的三类文件在内部被称为每个关系的分叉(fork),数据文件的fork号为0,空闲文件fork号为1,可见性地图文件的fork号为2。

4.数据块内部结构

(1)块头。(2)行指针。(3)堆元素(记录数据本身)

插入数据操作(insert):

有点像俄罗斯方块,插入一个操作就新建一个指针,这个指针指向所记录的元素。

更新数据操作(update):

PG特有的update方式,所以才会有vacuum进程。

update操作时,PG会先delete掉原来的行,再insert全新的行,也可以说把原来的行标记为删除状态,被删除的行空间不会立刻释放,vacuum操作时会释放。

读操作(select):

分为全表扫描(PG中叫顺序扫描),索引扫描。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1676459.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

拯救者杯OPENAIGC开发者大赛城市巡回沙龙,苏州站报名开启!

由联想拯救者、AIGC开放社区、英特尔联合主办的“AI生成未来第二届拯救者杯OPENAIGC开发者大赛”自上线以来,吸引了广大开发者的热情参与。 为了向技术开发者、业务人员、高校学生、以及个体创业人员等参赛者们提供更充分的帮助与支持,AIGC开放社区特别…

RockChip Android8.1 EthernetService分析

一:概述 本篇文章将围绕RK Android8.1 SDK对Ethernet做一次框架分析,包含Framework层和APP层。 当前版本SDK默认只支持一路Ethernet,熟悉Ethernet工作流程后通过修改最终会在系统Setting以太网中呈现多路选项(可以有多种实现方式),博主通过增加ListPreference实现的效果…

C++设计模式|创建型 5.原型模式

1.什么是原型模式? 原型模式⼀种创建型设计模式,该模式的核⼼思想是基于现有的对象创建新的对象,⽽不是从头开始创建。 在原型模式中,通常有⼀个原型对象,它被⽤作创建新对象的模板。新对象通过复制原型对象的属性和状…

namenode启动失败 org.apache.hadoop.hdfs.server.common.InconsistentFSStateException:

小白的Hadoop学习笔记 2024/5/14 18:26 文章目录 问题解决报错浅浅分析一下core-ste.xml 问题 namenode启动失败 读日志 安装目录下 vim /usr/local/hadoop/logs/hadoop-tangseng-namenode-hadoop102.log2024-05-14 00:22:46,262 ERROR org.apache.hadoop.hdfs.server.namen…

开源可视化表单服务商:提升自主研发 助力流程化办公!

当前,做好流程化办公可以为企业实现提质增效的办公效果,助力企业进入数字化转型。作为开源可视化表单服务商,流辰信息坚持研发创新理念,努力提升自主研发能力,专为广大客户朋友提供集产品、框架定制、产品交付为一体的…

Java面试八股之Java中有哪些原子类,原理是什么

Java中有哪些原子类,原理是什么 AtomicInteger 和 AtomicLong: 用于对整数(int)和长整数(long)进行原子操作。 原理:它们内部封装了一个整型或长整型变量,并通过使用Unsafe类提供…

查找总价格为目标值的两个商品(双指针)

算法原理: 其实我们首先想到的方法肯定是暴力,两个for循环嵌套就能找到,但肯定会超时。 其实啊一切算法的总结都是在暴力的基础上进行的,算法其实就是对暴力进一步的优化。 定义两个指针,分别指向两端,然后…

单用户模式破解root密码

目录 一. 破解root密码 1. 查看操作系统版本 2.重启系统,进入grub菜单,选择要使用的内核,按e进入​编辑 3. 找到linux16那一行,把光标移动到最后,添加 init/bin/sh 然后ctrlx保存退出会自动进入系统 4. 进入系统后…

程序员就是管道工

程序是由指令和数据组成的。 指令是按照特定的顺序执行的,这些顺序好比水的流向。 要想让水高效地流向我们想要的地方,就要设计一个精良的管道系统,这好比算法。 剩下的就是修建管道了,你要知道各种管的型号、用途,然…

Java 包语句,看这一篇就够了

1.设计的文件层级 我们将“Package”文件夹称为根目录,“Level01”称为一级目录,“Level02”称为二级目录,以此类推。 2.发现在不同目录下的包名有如下特征: 根目录下的文件不需要包名,可以理解成包名为 “”一级目录…

洁太司检测试剂盒:肝癌早诊新利器,共筑健康未来

随着科技进步及医疗技术的不断创新,人类对疾病的早期诊断和治疗提出了更高的要求。 先思达生物近期推出的“洁太司-寡糖链检测试剂盒”,在原发性肝细胞癌的诊断领域实现了重大突破,获得了国家药品监督管理局(NMPA)的三…

8.基于鱼鹰优化算法(OOA)优化VMD参数(OOA-VMD)

代码原理 鱼鹰优化算法(Osprey Optimization Algorithm, OOA)是一种基于仿生学原理的启发式优化算法,它模拟了鱼鹰觅食的行为,通过调整搜索空间中的个体位置来优化目标函数。 鱼鹰优化算法可参考:鱼鹰优化算法(Ospre…

【系统运维】如何查找用户账号锁定位置

【问题】AD环境下,经常会遇到用户账号因输错密码次数超限而被锁的情况。 如果AD环境较简单还好说,但如果域控很多,要定位用户账号被锁在哪里就有点小麻烦了,比如开发人员可能会频繁登录多台服务器,如果某台服务器缓存了…

【Android Studio】使用UI工具绘制,ConstraintLayout 限制性布局,快速上手

文章目录 一、前言二、绘制效果三、ConstraintLayout 使用方法3.1 创建布局文件3.2 替换配置3.3 设置约束,步骤13.4 设置约束,步骤23.5 其他设置 四、结束 一、前言 在进行Android APP开发过程中,减少layout嵌套即可改善UI的绘制性能&#x…

2024CCPC全国邀请赛(郑州)暨河南省赛

2024CCPC全国邀请赛(郑州站)暨河南省赛 一铜一银,虽不是线下第一次参赛但是第一次拿xcpc奖牌,还有个国赛奖真是不戳。感谢学长,感谢队友! 虽然遗憾没有冲到省赛金,不过还有icpc商丘&#xff08…

【Transformer-BEV编码(10)】CVPR2021 PYVA 第一个明确提到 cross-attention decoder可用于视图转BEV

论文信息 论文名:Projecting Your View Attentively: Monocular Road Scene Layout Estimation via Cross-view Transformation 中文:通过交叉视图变换(crossview transform module)估计单目道路场景布局 数据集:KITT…

【Android】Apk图标的提取、相同目录下相同包名提取的不同图标apk但是提取结果相同的bug解决

一般安卓提取apk图标我们有两种常用方法: 1、如果已经获取到 ApplicationInfo 对象(假设名为 appInfo),那么我们获取方法为: appInfo.loadIcon(packageManager)// 返回一个 Drawable 对象2、 如果还没获取到 Applica…

Springboot+mybatis-plus+dynamic-datasource+继承DynamicRoutingDataSource切换数据源

Springbootmybatis-plusdynamic-datasource继承DynamicRoutingDataSource切换数据源 背景 最近公司要求支持saas,实现动态切换库的操作,默认会加载主租户的数据源,其他租户数据源在使用过程中自动创建加入。 解决问题 1.通过请求中设置租…

IEEE(电气电子工程师学会)数据库文献去哪里查询下载

IEEE数据库简介: IEEE(电气电子工程师学会)是目前全球科学技术领域领先的专业机构。其期刊在电气电子工程、计算机科学、人工智能、机器人、自动化控制、遥感和核工程领域的期刊影响因子和被引用量都名列前茅。而其学术会议涉及领域广&#…

2025考研专业课、英语、数学、政治视频大全,整理全了!

考研季又到了,备考的小伙伴们,你们准备好了吗? 时间管理 考研是一场与时间的赛跑,合理安排时间,让复习更高效! - 制定详细的学习计划,每天、每周、每月都有明确目标 - ‍♂️ 保持一定的学习…