首页 > 数据库 >PostgreSQL技术大讲堂 - 第16讲:元组(行)结构与dml操作

PostgreSQL技术大讲堂 - 第16讲:元组(行)结构与dml操作

时间:2023-05-19 16:46:02浏览次数:47  
标签:PostgreSQL 16 Tuple dml 元组 PG xmax 操作

 

PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUG PG技术大讲堂。

Part 16:元组(行)结构与dml操作

内容1:PostgreSQL行结构

内容2:DML操作方式

内容3:块空间清理

 

 

· 元组(行)结构

t_xmin保存插入此元组的事务的txid。

t_xmax保存删除或更新此元组的事务的txid。如果此元组未被删除或更新,则t_xmax设置为0,这意味着无效。

 

 

 

行头信息

· 块中的行结构

 

 

 

工具介绍

· Pageinspect工具

PostgreSQL提供了一个扩展pageinspect,它是一个贡献模块,用来显示数据库页面的内容。

该pageinspect模块提供的功能允许我们从底层检查数据库页面的内容,这对于调试非常有用。所有这些功能只能由超级用户使用

· 使用方法:

CREATE EXTENSION pageinspect;SELECT lp as tuple, t_xmin, t_xmax, t_field3 as t_cid, t_ctid FROM heap_page_items(get_raw_page('tbl', 0));

 

DML操作

· Insertion

 

 

· Deletion

 

 

· Update

执行第一个更新命令时,通过将txid 100设置为t_xmax,逻辑上删除Tuple_1,然后插入Tuple_2。然后,将元组1的t_ctid重写为指向元组2。

当执行第二个UPDATE命令时,与第一个UPDATE命令一样,Tuple_2在逻辑上被删除,Tuple_3被插入。

 

 

块空间清理

· Vacuum操作

块中被删除的行的是逻辑上删除,物理上还保留在块中,如果长时间不清理,会造成垃圾空间膨胀,设想,如果一个块中有50%垃圾,那么就浪费50%的存储空间,如果读到内存,也会浪费50%的内存空间,所以需要定期的清理,而清理的工作由AutoVacuum来操作,或者我们也可以手动操作。

pg_freespacemap插件可以很好的监测块中空间的使用情况,可当作full vacuum操作的参考信息。

 

 

 

以上就是Part 16 - PostgreSQL 元组(行)结构与dml操作 的内容,欢迎进群一起探讨交流,往期视频,联系cuug客服

 

标签:PostgreSQL,16,Tuple,dml,元组,PG,xmax,操作
From: https://www.cnblogs.com/cnblogs5359/p/17415678.html

相关文章

  • docker从入门到实践学习笔记【环境ubuntu16.04】【一】
    镜像加速国内从DockerHub拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker官方和国内很多云服务商都提供了国内加速器服务,例如: Docker官方提供的中国registrymirrorhttps://registry.docker-cn.com七牛云加速器https://reg-mirror.qiniu.com/ 我们以Docker官......
  • docker从入门到实践学习笔记【环境ubuntu16.04】【二】
     目录获取镜像 运行容器列出镜像虚悬镜像中间层镜像 删除本地镜像批量删除镜像  镜像是docker的三大组件之一。Docker运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker会从镜像仓库下载该镜像。 获取镜像 从Docker镜像仓库获取镜像的命令是dockerpull。......
  • docker从入门到实践学习笔记【环境ubuntu16.04】【三】
    目录 新建容器并启动启动已经终止的容器后台运行终止容器进入容器导入和导出容器导出容器导入容器删除容器清理所有终止状态的容器新建容器并启动 dockerrun 例如,下面的命令输出一个“HelloWorld”,之后终止容器 $dockerrunubuntu:14.04/bin/echo'Helloworld'Hellow......
  • docker从入门到实践学习笔记【环境ubuntu16.04】【四】
    目录数据卷创建一个数据卷查看所有数据卷查看指定数据卷的详细信息启动容器的同时挂在数据卷查看容器的信息删除数据卷在容器销毁时自动删除数据卷挂载主机目录作为数据卷挂载一个本地主机文件作为数据卷  数据卷数据卷特性:1.可以在容器之间共享和重用2.对数据卷的修改立马生效3.......
  • C#中BitConverter.ToUInt16、BitConverter.ToUInt32原理与用法详解
    一、基础知识a、1字节=8位(1Byte=8bit) 二进制表示:11111111 十进制表示:255计算机内部约定用多少字节来规范数值,比如红绿蓝三色在计算机中只分配了一个字节,一个字节有八位,每一位只能储存1或0,计算机只认识二进制(0与1),所以就是2的八次方,计算机中约定从0开始计数,所......
  • 从零玩转Activiti7工作流-2021-09-12-16-22-07
    title:从零玩转Activiti7工作流date:2021-09-1216:22:08.51updated:2021-12-2617:43:12.171url:https://www.yby6.com/archives/2021-09-12-16-22-07categories:-工作流tags:Activiti讲师:波波​工作流(Workflow),就是通过计算机对业务流程自动化执行......
  • postgresql关键字包含order、account,不能用作表名
    原先项目数据源为mysql,操作的业务表表名有order,account,将数据库迁移到postgresql且配置里更改数据源为postgresql(对该数据源了解不深)后调用提示如下的异常,给的提示很模糊,如果通过搜索引擎估计得很久才能定位到原因,通过询问AI可以得到准确的原因解释及建议。 ......
  • CF616C
    比较简单的一题,考虑首先用dfs或者并查集预处理出每个点所在连通块的大小,再用个num把这个连通块标号。对于每个点最后的答案,就是相邻4个点答案总和,不过需要注意的是可能会出现重复的情况,所以需要用一个pd数组表示在这次统计的时候这个连通块有没有出现过(num的作用),然后撤销不能mems......
  • 学习记录:NC16622[NOIP2009]多项式输出
    题目链接:https://ac.nowcoder.com/acm/problem/16622解题思路:这题有个在拓扑序上的直觉。(并不完全是拓扑学,只是一种感觉)举个例子,每i项,都是有了符号,再有系数,最后指数,我们确定了前面输出什么才有后面的判断。但并不完全是这样,该题当指数为0时,会影响系数的输出格式(x是否要输出......
  • quasar [email protected] ssr Meta插件 使用 title无法reactive的bug
    为了使自己的网站SEO更友好,在项目里启用了quasar的Meta插件。但实际使用下来发现文档里的描述不正确。为了动态的更新title和meta信息,文档https://quasar.dev/quasar-plugins/meta里介绍ReactiveInthesectionabove,younoticedallofthemetapropsare“static”.But......