事务处理
2023-05-04 09:51:34 0 举报
AI智能生成
操作系统学习总结。
作者其他创作
大纲/内容
分布式事务
CAP
CP 系统
AP 系统
最终一致性
可靠事件队列
执行流程
最大努力一次提交
特点
足够简单
不保证隔离性
TCC 事务(回滚)
执行流程
特点
高性能
强隔离性
可定制
幂等性
侵入性强
SAGA 事务(补偿)
事务定义
处理方法
正向恢复(Forward Recovery)
反向恢复(Backward Recovery)
特点
补偿容易实现
需要考虑崩溃恢复机制
AT 事务(补偿)
基本原理
特点
支持全局锁
可能产生脏读
高吞吐量
弱隔离性,不保证原子性
共享事务
压力方向相反
全局事务
两阶段提交(2PC)
准备阶段
提交阶段
一致性前提
提交阶段网络可靠
节点失联最终都能恢复
存在问题
单体故障
性能差
一致性风险
优化措施
三阶段提交(3PC)
优化措施
存在问题
性能差
一致性风险
应用实例
Percolator - NewSQL
处理流程
准备阶段
提交阶段
PGXC - 一阶段提交
本地事务
ACID
原子性(Atomic):同一项业务处理过程中多个数据修改必须同时成功或撤销
隔离性(Isolation):不同业务处理过程中各自读、写数据不会相互影响
持久性(Durability):被成功提交的数据修改都能够正确地被持久化
一致性(Consistency):数据正确不会产生矛盾
原子性和持久性
崩溃处理
FORCE 与 STEAL
提交日志(Commit Logging)
存在问题
预写日志(Write-Ahead Logging)
影子分页
隔离性
锁
排他锁(X-Lock)
共享锁(S-Lock)
范围锁(Range Lock)
隔离级别
无隔离(None):脏写(Dirty Writes)
读未提交(Read Uncommitted):脏读(Dirty Reads)
读已提交(Read Committed):不可重复读(Non-Repeatable Reads)
可重复读(Repeatable Read):幻读(Phantom Reads)
只读事务
读写事务
可串行化(Serializable)
多版本并发控制(MVCC)
插入
删除
修改
查询
可重复读
读已提交
事务隔离
弱隔离级别
读写竞争
脏写 -> 读-未提交
脏读 -> 读-提交
防止脏读
防止脏写
存在问题
不可重复读 -> 可重复读
实现快照级别隔离
一致性快照的可见性规则
不可见
可见
索引与快照级别隔离
写写竞争
更新丢失
原子写操作
显式加锁
自动检测更新丢失
原子比较和设置
冲突解决与复制
多对象冲突
写倾斜
幻读
实体化冲突
强隔离级别
悲观并发控制
实际串行执行
存储过程封装
优势与劣势
分区
两阶段加锁(2PL)
实现方式
性能分析
谓词锁
索引区间锁
乐观并发控制
可串行化快照隔离(SSI)
基于过期的条件做决定
检测是否读取过期的 MVCC 对象
检测写是否影响了之前的读
可串行化快照隔离的性能
跟踪事务读写的粒度
与实际串行执行相比
与两阶段加锁相比
0 条评论
下一页