- 读未提交(Read Uncommitted) # 读其它事务未提交的数据
- 现象
- 不允许更新丢失
- 允许脏读(dirty read) # 事务中读到不存在数据, 是其它事务修改中的数据
- 原理
- 可同时读
- 不同时写,多事务写
- 实现
- 排他写锁
- 现象
- 读提交(Read Committed) # 读其它事务提交的数据
- 现象
- 不允许脏读
- 允许不可重复读(nonRepeatable read) # 事务中前后查询不一致
- 原理
- 可同时读
- 单事务写
- 实现
- 瞬间共享读锁
- 排他写锁
- 现象
- 可重复读(Repeatable Read) # 读到的数据加锁,解决不可重复读问题
- 现象
- 不允许脏读
- 不允许不可重复读
- 允许幻读(phantom read) # 事务中存在未生效行,是其它事务的插入或删除
- 原理
- 读到的数据(加锁)不写
- 单事务写
- 实现 # 读涉及范围加锁
- 共享读锁
- 排他写锁
- 现象
- 序列化(Serializable) # 或叫串行化
- 原理
- 事务序列化执行
- 实现
- 读锁写锁互斥
- 原理