事务
AICD
- Atomicity:原子性
- Isolation:隔离性
- Consistency:一致性
- Durability:持久性
脏读、不可重复读、幻读
- 脏读:一个事务中读到其他未提交事务修改的数据
- 不可重复读:在一个事务中,对同一份数据多次读取到的结果不一致
- 更侧重数据的修改
- 幻读:在一个事务内,相同的select语句前后执行,得到的数据结果不一致
- 更侧重数据的insert和delete
事务隔离级别
- Serializable(顺序读):可避免脏读、不可重复读、幻读
- 所有语句都会上锁;select也会追加共享锁(lock in share mode)
- 加上共享锁,允许其他读操作;保存读取数据一致性;如果发生写操作,尝试对数据加独占锁时,则会失败;必须等共享锁释放才可以。
- Repeatable read(可重复读,默认隔离级别):可避免脏读、不可重复读
- 消除脏读的原因:数据快照ReadView中记录了所有在途的事务集合,可以屏蔽不可见的事务结果
- 消除不可重复读的原因:采用