首页 > 数据库 >PostgreSQL技术大讲堂 - 第20讲:事务概述与隔离级别

PostgreSQL技术大讲堂 - 第20讲:事务概述与隔离级别

时间:2023-06-29 15:02:01浏览次数:45  
标签:事务 20 隔离 -- txid 快照 大讲堂 PostgreSQL 级别

 

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

第20讲:事务概述与隔离级别

内容1:ACID四大特性

内容2:PostgreSQL事务隔离级别

内容3:MVCC介绍

内容4:Clog与事务状态

内容5:事务快照

内容6:可重复读隔离级别特点

内容7:读提交隔离级别特点

 

内容8:可串行化隔离级别特点

 

ACID概述

· ACID四大特性:

--> Atomicity(原子性):一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。

--> Consistency(一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的数据必须完全符合所有的预设规则,这包含数据的精确度、串联性以及后续数据库可以自发性地完成预定的工作。

--> Isolation(隔离性):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。

--> Durability(持久性):事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

 

PostgreSQL支持的事务隔离级别

· 下表描述了PostgreSQL实现的事务隔离级别

 

MVCC概述

· 事务id(txid)

并发控制是一种在数据库中并发运行多个事务时保持一致性和隔离性的机制,这是ACID的两个属性。

并发控制技术:

--> 多版本并发控制(MVCC)

--> 严格的两阶段锁(S2PL)

--> 乐观并发控制(OCC)

· MVCC特点

每次写操作都会创建数据项的新版本,同时保留旧版本。当事务读取一个数据项时,系统会选择其中一个版本以确保单个事务的隔离。MVCC的主要优点是“读不阻止写,写不阻止读,相反,例如,基于S2PL的系统必须在写卡器写入项时阻止读卡器,因为写卡器获取项的独占锁。PostgreSQL和一些rdbms使用MVCC的一个变体,称为快照隔离(Snapshot Isolation,SI)。

 

MVCC实现对比

· 事务id(txid)

PostgreSQL通过应用可见性检查规则来选择项目的适当版本

由于PostgreSQL数据块中包含了未删除和已删除的行的数据,所以在读取数据块中行的时候,需要一套规则来判断哪些行能够被哪些事务所看得见,我们成为行可见性规则

Oracle使用回滚段来选择项目的适当版本

Oracle专门创建了一个回滚表空间,用来存放修改前的行的数据,而表的数据块中没有包含删除行的数据,所以不需要行可见性规则来判断。

 

事务状态

· Transaction Status

四种事务状态:

--> IN_PROGRESS

--> COMMITTED

--> ABORTED

--> SUB_COMMITTED

 

Commit Log

· Clog 工作原理

 

事务快照

· 内置函数txid_current_snapshot及其文本表示格式

testdb=# SELECT txid_current_snapshot();

txid_current_snapshot

-----------------------

100:104:100,102

(1 row)

· txid_current_snapshot的文本表示为“xmin:xmax:xip_list”,组件描述如下

Xmin:最早仍在活动的txid。所有以前的事务要么提交并可见,要么回滚并停止。

Xmax:第一个尚未分配的txid。截至快照时,所有大于或等于此值的txid尚未启动,因此不可见。

xip_list:快照时的活动txid。该列表仅包含xmin和xmax之间的活动txid。

例如,在快照'100:104:100,102'中,xmin是'100',xmax是'104',xip_list是'100,102'。

· Examples of transaction snapshot representation

 

事务管理器

· 不同隔离级别的事务快照状态

 

并发UPDATE时

 

 

防止更新的数据丢失

· 并发UPDATE操作,隔离级别不同如何保护已修改的数据不丢失

1)如果A事务回滚,则b事务能够更新成功

2)B事务如果查询了表,则再次更新时失败,如果没有,则会更新成功

 

 

防止更新的数据丢失

· 读提交事务隔离级别(事务A和B同时修改同一行)

· 可重复读事务隔离级别(事务A和B同时修改同一行)

· 可重复读事务隔离级别(事务B在提交前执行了查询)

· 可重复读事务隔离级别(事务B在提交前没有执行查询)

 

可串行化快照隔离

· SSI(可串行化快照隔离)实施的基本策略

写入倾斜计划及其优先级图

· 在PostgreSQL中实现SSI

SIREAD locks:SIREAD锁在内部称为谓词锁,三个部分组成,由一对对象和(虚拟)txid 组成。

rw-conflicts:rw-conflicts是SIREAD锁的三个组成部分中的一个和读写SIREAD锁的两个txid

· SSI 怎样造成的

事务提交失败的原因是要保护事务A修改的结果,因为事务B是在可串行化事务隔离级别,所以无法看到事务A修改后的结果

· 其它造成的场景

注意事务提交的不同顺序

· 假阳性可串行化快照隔离异常

两个事务分别查询和更新各自的行,所以不会影响,都能够提交成功。

· 假阳性可串行化快照隔离异常(1) – Using sequential scan

表没有索引,导致顺序扫描,两个事务操作时发生交叉访问同一个块

· 假阳性可串行化快照隔离异常(2) – Index scan using the same index page

如果表比较小,导致root和leaf索引块同属于一个块,两个事务也发生交叉访问同一个索引块

· 假阳性可串行化快照隔离异常(3) – Index scan using the difference index page

插入新数据,导致root和leaf索引块不属于一个块,不会造成交叉访问

 

以上就是 第20讲- 事务与隔离级别 的内容,欢迎一起探讨交流,往期视频,联系cuug

QQ交流群:752027153

微信交流群:联系客服拉你进微信PG交流群

 

钉钉交流群:35822460,钉钉群专门有视频讲解

标签:事务,20,隔离,--,txid,快照,大讲堂,PostgreSQL,级别
From: https://www.cnblogs.com/cnblogs5359/p/17514198.html

相关文章

  • 2023-06-27
    AndroidStudio使用新建项目最新版本选择EmptyActivity不能选择语言解决方案:选择新建EmptyViewsActivity主要文件界面设计文件名一般是activity_main.xml布局预览界面和源代码界面的切换:点击右上方code切换到代码编辑界面,点击右上方design可以切换到预览界面,并且......
  • 2023年7月DAMA-CDGP数据治理专家认证,如何报名?
    DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业竞争能力。DAMA是数据管理方面的认证,帮助数据从业者提升......
  • 2023年下半年西安/成都/深圳NPDP产品经理认证报名
    产品经理国际资格认证NPDP是新产品开发方面的认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。  【认证机构】 产品开发与管理协会(PDMA)成立于1979年,是全球范围内产品开发与管理专业人士最杰出的倡导者,协助个人、企业......
  • 2023年有哪些装机必备的浏览器插件?
    2023年有哪些装机必备的浏览器插件?浏览器除了速度快、简洁等特点之外,最大的特色是拥有使用扩展程序,配合好用的扩展能发挥浏览器的真正的用处,今天盘点一下浏览器2023年最值得期待宝藏扩展。下面我将详细介绍**篡改猴、油小猴工具箱、沉浸式翻译、IETab、iTab新标签页、猫抓、Ope......
  • 2023年7月DAMA-CDGA/CDGP数据治理认证怎么报名?
    DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业竞争能力。DAMA是数据管理方面的认证,帮助数据从业者提升......
  • 绍兴高防BGP服务器-游戏专用高频服务器-203.135.98.X
    绍兴高防BGP服务器-游戏专用高频服务器绍兴高防BGP服务器是一种专门为游戏行业设计的高频服务器。在现代社会中,游戏行业的发展迅猛,吸引了大量的玩家加入其中。玩家对游戏的需求不断增加,对服务器的性能要求也越来越高。因此,绍兴高防BGP服务器应运而生,以满足游戏行业对服务器的需求......
  • 2023最新Telegram电报群管理机器人源码+教程
    #功能##欢迎消息-当有新人进群的时候,发送欢迎消息-欢迎消息支持30秒自毁-支持设置欢迎消息的内容包含群描述和置顶消息-支持自定义欢迎消息-自定义欢迎消息支持使用变量,可以嵌入新成员的名字,群描述,置顶内容和链接等-欢迎消息可以在设置中关闭,30秒自毁功能也可以关闭##进......
  • 论文阅读: (CVPR2023 SDT )基于书写者风格和字符风格解耦的手写文字生成及源码对应
    引言许久不认真看论文了,这不赶紧捡起来。这也是自己看的第一篇用到Transformer结构的CV论文。之所以选择这篇文章来看,是考虑到之前做过手写字体生成的项目。这个工作可以用来合成一些手写体数据集,用来辅助手写体识别模型的训练。本篇文章将从论文与代码一一对应解析的方式来撰......
  • 2023.6.29 重构 2 行二进制矩阵
    考虑贪心策略。每一列,把1优先放在lower和upper两行中较大的那一行上。implSolution{pubfnreconstruct_matrix(upper:i32,lower:i32,colsum:Vec<i32>)->Vec<Vec<i32>>{letn=colsum.len();let(mutupper,mutlower)=(upper,l......
  • 英特尔CEO欧德宁:2010年企业PC支出将出现增长
     本文发表于2009-10-2802:0311/6/200910:36:19AM北京时间10月27日消息,据国外媒体报道,英特尔CEO保罗欧德宁(PaulOtellini)今天表示,2010年企业在PC上的支出将出现增长。欧德宁说:2010年,企业在PC上的支出将显著提高,这为我们提供了一个非常好的机遇。欧德宁没有披露2010年PC销量。本......