当前位置:网站首页>PG基础篇--逻辑结构管理(事务)
PG基础篇--逻辑结构管理(事务)
2022-07-06 12:42:00 【51CTO】
事务提交
pg默认是自动提交事务,可将自动提交功能关闭
关闭自动提交
savepoint
pg支持保存点功能,在一个大事务中,可以把操作过程分成几个部分,第一个部分执行成功后可以建一个保存点,若后面的部分执行失败,则回滚到此保存点,而不必回滚整个事务。
插入的第二条数据,回滚到第一个保存点。
事务隔离级别
和mysql一样,pg的事务隔离级别也分为4种,
read uncommited 读未提交
read commit读已提交
repeatable read 可重复读
serializable 串行化
脏读:一个事务读取了另一个事务未提交数据。
不可重复读:一个事务重新读取前面读取过的数据时,发现该数据已经被另一个事务修改过(update ,delete)。
幻读:一个事务开始后,查询符合条件的数据后,再次查询,发现多了数据(insert)。
pg可重复读可以避免不可重复读,但是避免不了幻读,这一点和mysql一样。不同点是pg默认的隔离级别是读已提交,而mysql默认是可重复读。
两阶段提交
在分布式系统中,事务中往往包含了多台数据库的操作,虽然单台数据库的操作能够保证原子性,但多台数据库之间的原子性就需要两阶段提交来实现了。
步骤
1)应用程序先调用各台数据库做一些操作,但不提交事务,然后应用程序调用事务协调器中的提交方法
2)事务协调器将联络事务中涉及的每台数据库,并通知它们准备提交事务,这是第一阶段的开始,就是调用PREPARE TRANSACTION。
3)各台数据库接收到PREPARE TRANSACTION后,如果返回成功,则数据库必须将自己置于如下状态:确保后续能在被提交事务的时候提价事务,或后续能在被要求回滚事务的时候回滚事务。所以PG会将已准备好提交的信息写入持久存储区中,如果数据库无法完成此事务,它会直接返回失败给事务协调器。
4)事务协调器接收所有数据库的响应。
5)第二阶段,如果任何一个数据库在第一阶段返回失败,则事务协调器将会发一个回滚命令给各台数据库,如果所有数据库的响应都是成功的,则向各台数据库发送commit prepared命令。通知各台数据库事务提交成功。
边栏推荐
- Why do novices often fail to answer questions in the programming community, and even get ridiculed?
- How to turn a multi digit number into a digital list
- 【DSP】【第一篇】开始DSP学习
- OLED屏幕的使用
- Variable star --- article module (1)
- Detailed explanation of knowledge map construction process steps
- 【每周一坑】正整数分解质因数 +【解答】计算100以内质数之和
- 知识图谱之实体对齐二
- Trends of "software" in robotics Engineering
- Case ① | host security construction: best practice of 3 levels and 11 capabilities
猜你喜欢
Tencent byte Alibaba Xiaomi jd.com offer got a soft hand, and the teacher said it was great
Case ① | host security construction: best practice of 3 levels and 11 capabilities
Tencent T4 architect, Android interview Foundation
【微信小程序】運行機制和更新機制
【每周一坑】信息加密 +【解答】正整数分解质因数
(工作记录)2020年3月11日至2021年3月15日
How to upgrade high value-added links in the textile and clothing industry? APS to help
02 基础入门-数据包拓展
Application layer of tcp/ip protocol cluster
【微信小程序】运行机制和更新机制
随机推荐
硬件开发笔记(十): 硬件开发基本流程,制作一个USB转RS232的模块(九):创建CH340G/MAX232封装库sop-16并关联原理图元器件
[DIY]如何制作一款个性的收音机
Special topic of rotor position estimation of permanent magnet synchronous motor -- Summary of position estimation of fundamental wave model
棋盘左上角到右下角方案数(2)
Rhcsa Road
How to select several hard coded SQL rows- How to select several hardcoded SQL rows?
01 basic introduction - concept nouns
Gui Gui programming (XIII) - event handling
I've seen many tutorials, but I still can't write a program well. How can I break it?
Leetcode question 448 Find all missing numbers in the array
Taylor series fast Fourier transform (FFT)
Appx code signing Guide
Detailed introduction of distributed pressure measurement system VIII: basic introduction of akka actor model
Kubernetes learning summary (20) -- what is the relationship between kubernetes and microservices and containers?
Quel genre de programmation les enfants apprennent - ils?
Deep learning classification network -- zfnet
JMeter server resource indicator monitoring (CPU, memory, etc.)
[DSP] [Part 1] start DSP learning
(work record) March 11, 2020 to March 15, 2021
Intel 48 core new Xeon run point exposure: unexpected results against AMD zen3 in 3D cache