数据库事务一致性与锁

2019-10-18  本文已影响0人  光谷电锯狂魔

对大多数SQL DB

事务:

由一系列数据库操作组成的一个不可拆分的逻辑过程

事务的特性(ACID):

不一致的情况:

时间 事务A 事务B
T1 开启事务 开启事务
T2 查询金额为100
T3 金额加10
T4 查询金额为110(脏读)
T5 金额加10 回滚,金额还原为100
T6 commit
T6 金额变为120
时间 事务A 事务B
T1 开启事务 开启事务
T2 查询金额为100 查询金额为100
T3 金额加10
T4 commit
T5 查询金额为110(不可重复读)
时间 事务A 事务B
T1 开启事务 开启事务
T2 查询学生分数
T3 新增一个学生的分数
T4 commit
T5 将所有学生百分制分数改为ABCDE等级
T6 commit
T6 发现还存在一个百分制的分数(幻读)
时间 事务A 事务B
T1 开启事务 开启事务
T2 查询金额为100 查询金额为100
T3 金额加10
T4 commit,金额变为110
T5 金额加20
T6 commit,金额变为120 (修改丢失)

隔离级别:

锁类型

数据库的事务隔离解释
数据库隔离级别的实现

对MongoDB

MongoDB的ACID特性

锁类型

MongoDB的事务、ACID和一致性
五个解决方案让MongoDB拥有RDBMS的鲁棒性事务

问题:怎么使用Reactive Mongo Transaction?

乐观锁 vs 悲观锁

上一篇 下一篇

猜你喜欢

热点阅读