mysql事务隔离级别
- 脏读
- 事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据
- 不可重复读
- 事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致。
- 幻读
- 系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。
事务隔离级别 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|
读未提交(read-uncommitted) | 是 | 是 | 是 |
不可重复读(read-committed) | 否 | 是 | 是 |
可重复读(repeatable-read) | 否 | 否 | 是 |
串行化(serializable) | 否 | 否 | 否 |
分布式事务作用
保证不同节点的数据一致性
XA分布式事务协议
2pc(两阶段递交)
通俗理解
类似于 吃鸡游戏四排时组队,必须所有队员全部准备才能开
两阶段递交过程
第一阶段(准备阶段)
- 事务中有两个角色,一个是协调者,一个是参与者
- 协调者会向参与者发送 事务准备请求
- 各个参与者会准备事务提交的相关数据,返回是否准备好了。进入第二阶段
个人理解
- 试探性的提交
第二阶段(提交阶段)
- 如果都准备好了,则进行递交操作,如果失败了,则执行回滚
- 协调者会向参与者发送提交请求
- 参与者会提交本地事务,并返回完成
- 当事务协调者收到所有的参与者提交完成,则完成分布式事务完成