事务隔离级别
- Read uncommitted(未提交读) 脏读,不可重复读,幻读
- Read committed(已提交读) 不可重复读,幻读
- Read Repeatable(可重复读取,InnoDB默认级别) 幻读
- Serializable(可串行化)
并发操作带来的数据不一致性
- 丢失数据修改: 两个事务T1和T2读入同一数据并进行修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被T2覆盖
- 读“脏”数据: 一个事务读取某个失败事务运行过程中的数据(未提交的数据),失败事务ROLLBACK
- 不可重复读: 事务T1读取数据后,T2执行了更新操作,修改了T1读取的数据.
- 幻读 or 产生“幽灵”数据: 可以简单理解,可重复读与update以及delete相关,幻读与insert有关,因为事务第一次读取数据之后给这些数据加了锁,其他事务不能修改这些数据。但这种方法无法锁住insert。
MVCC 多版本控制
乐观锁