事务中的几个常见的概念
- 脏写
- 一个事务修改了另一个未提交事务修改过的数据
- 脏读
- 一个事务读到了另一个未提交事务修改过的数据
- 不可重复读
- 一个事务只能读到另一个已经提交的事务修改过的数据,并且其他事务每对该数据进行一次修改并提交后,该事务都能查询得到最新值
- 幻读
- 一个事务先根据某些条件查询出一些记录,之后另一个事务又向表中插入了符合这些条件的记录,原先的事务再次按照该条件查询时,能把另一个事务插入的记录也读出来
隔离级别
- 未提交读(READ UNCOMMITTED)
- 已提交读(READ COMMITTED)
- 可重复读(REPEATABLE READ)
- 可串行化(SERIALIZABLE)
- MVCC
- ReadView(快照)
- READ COMMITTED隔离级别的事务在每次查询开始时都会生成一个独立的ReadView
- REPEATABLE READ —— 在第一次读取数据时生成一个ReadView
- ReadView(快照)
- 间隙锁