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

之前有说过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.mzph.cn/bicheng/12286.shtml

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

相关文章

C语言基础-类型转换规则

在C语言中,类型转换(或称为类型强制转换)是一种机制,它允许我们将一个数据类型的值转换为另一个数据类型的值。这种转换可以是隐式的(由编译器自动执行),也可以是显式的(由程序员明确…

升级到delphi 12 时,以前版本app编译后不能正常运行的原因

AndroidManifest.xml文件中权限行是 <uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion"32" /> <uses-permission android:name"android.permission.WRITE_EXTERNAL_STORAGE" andro…

赋能业务全球化,明道云HAP通过亚马逊云科技 FTR认证

近日&#xff0c;明道云作为融合多元能力的超级应用平台&#xff0c;成功通过了AWS&#xff08;Amazon Web Service&#xff09;的FTR&#xff08;Foundational Technical Review&#xff09;认证。FTR是亚马逊云科技为合作伙伴解决方案提供的一项全面技术审核机制&#xff0c;…

Python 操作数据库

十、Python3 操作数据库 1、Python3 操作 MySQL 1、基本介绍 Python3 操作 MySQL 数据库 可以使用的模块是 pymysql 和 MySQLdb。 这个两个模块都是通过自己的 API 执行原生的 SQL 语句实现的。 MySQLdb 是最早出现的一个操作 MySQL 数据库的模块&#xff0c;核心由C语言编…

Builder建造者模式

Builder是内部类&#xff0c;用来构造类。 Builder的作用就是&#xff1a;默认属性代替设置属性&#xff0c;清晰代码意图。 构造方法中只设置必须参数&#xff08;可以设置为final&#xff09;&#xff0c;在构造后再set可选初始化数据&#xff0c;每一个set返回一个Builder&…

【NodeMCU实时天气时钟温湿度项目 7】和风天气API返回JSON数据信息的解压缩实现——ArduinoUZlib功能库

今天是第七专题&#xff0c;主要内容是&#xff1a;导入ArduinoUZlib功能库&#xff0c;借助该库把从【和风天气】官网返回的经过Gzip压缩的JSON数据&#xff0c;进行解压缩和t解析&#xff0c;在串口监视器上输出解析后的JSON信息。 如您需要了解其它专题的内容&#xff0c;请…

C++:编程世界的永恒之石

在编程的广袤领域中&#xff0c;C犹如一块永恒的基石&#xff0c;历经岁月的洗礼&#xff0c;依旧坚固而璀璨。它的深厚底蕴、强大功能和广泛的应用领域&#xff0c;使其成为无数程序员心中的信仰与追求。 一、C&#xff1a;历史与传承的交汇点 C的历史可追溯到上世纪80年代&…

由于安全设置错误,远程桌面连接失败怎么办?

问题&#xff1a;远程桌面安全设置错误&#xff1f; “我是一名IT经理&#xff0c;需要经常使用远程桌面连接到办公室的电脑。近期&#xff0c;我在使用远程桌面时&#xff0c;远程桌面提示‘由于安全设置错误&#xff0c;客户端无法连接到远程计算机。’我不清楚是什么原因所…

Flutter 中的 SimpleDialog 小部件:全面指南

Flutter 中的 SimpleDialog 小部件&#xff1a;全面指南 在Flutter中&#xff0c;SimpleDialog是一个模态对话框&#xff0c;用于显示选项列表&#xff0c;让用户从中选择。与AlertDialog相比&#xff0c;SimpleDialog通常用于提供多个选项供用户选择&#xff0c;而不是显示警…

哪些软件格式在win跟linux上都能运行?

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「linux的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 有一些软件格式在Windows和Li…

css常用语法汇总

一、background-size&#xff1a; 属性规定背景图像的尺寸。 <!DOCTYPE html> <html> <head> <style> body { background:url(/i/bg_flower.gif); background-size:63px 100px; -moz-background-size:63px auto; /* 老版本的 Firefox */ background…

Windows snmp++获取本地主机信息

编译snmp的包 调用snmp.lib实现信息获取_哔哩哔哩_bilibili 代码&#xff1a; #include <iostream> #include <libsnmp.h> #include <vector> #include <fstream> #include <string> #include "snmp_pp/snmp_pp.h" //#define _NO_L…

基于django医用耗材网上申领系统的实现

基于django医用耗材网上申领系统的实现 开发语言:Python 数据库&#xff1a;MySQL所用到的知识&#xff1a;Django框架工具&#xff1a;pycharm、Navicat、Maven 系统功能实现 管理员登录 系统在安全性的验证方面究竟做了什么功能呢&#xff1f;在做之前我们也进行了思量&…

开源go实现的iot物联网新基建平台

软件介绍 Magistrala IoT平台是由Abstract Machines公司开发的创新基础设施解决方案&#xff0c;旨在帮助组织和开发者构建安全、可扩展和创新的物联网应用程序。曾经被称为Mainflux的平台&#xff0c;现在已经开源&#xff0c;并在国际物联网领域受到广泛关注。 功能描述 多协…

re--SMC

参考&#xff1a;http://t.csdnimg.cn/g7fUY 参考&#xff1a;http://t.csdnimg.cn/qi3q5 简介 SMC&#xff0c;即Self Modifying Code&#xff0c;动态代码加密技术&#xff0c;指通过修改代码或数据&#xff0c;阻止别人直接静态分析&#xff0c;然后在动态运行程序时对代…

【CANoe】CAPL中生成报告常用的测试函数

文章目录 一、常用函数1、测试标题、描述、Comment2、测试步骤3、延时4、报告中插入图片5、报告中插入窗口截图二、实例源码三、报告效果一、常用函数 1、测试标题、描述、Comment testCaseTitle("TC 3.1", "Test Case 3.1"); testCaseDescription

[动画详解]LeetCode151.翻转字符串里的单词

&#x1f496;&#x1f496;&#x1f496;欢迎来到我的博客&#xff0c;我是anmory&#x1f496;&#x1f496;&#x1f496; 又和大家见面了 欢迎来到动画详解LeetCode算法系列 用通俗易懂的动画让算法题不再神秘 先来自我推荐一波 个人网站欢迎访问以及捐款 推荐阅读 如何低成…

pdf怎么标注红色方框?五种PDF标注红色方框方法

pdf怎么标注红色方框&#xff1f;在当今数字化时代&#xff0c;PDF文档已成为我们日常工作和学习中不可或缺的一部分。然而&#xff0c;如何在海量的PDF文件中快速、准确地标注出重要信息&#xff0c;让内容更加醒目呢&#xff1f;今天&#xff0c;我将向大家介绍五种PDF标注红…

DeepSort / Sort 区别

推荐两篇博文,详细介绍了deepsort的流程及代码大致讲解: https://blog.csdn.net/qq_48764574/article/details/138816891 https://zhuanlan.zhihu.com/p/196622890 DeepSort与Sort区别: 1、Sort 算法利用卡尔曼滤波算法预测检测框在下一帧的状态,将该状态与下一帧的检测结…

Context Pattern上下文模式

使用情景 全局使用的配置&#xff0c;数据库的连接。MVC中的跨层数据传输携带请求ID&#xff0c;用户信息等用户权限信息线程上下文 跨层数据共享 统一调用参数 携带多个事务需要处理的对象 携带用户信息 使用ThreadLocal