隔离级别:
- Read Uncommitted(读未提交): 所有事务都可以看到其他未提交事务的执行结果。
- Read Committed(读已提交) :一个事务只能看见已经提交事务所做的改变。
- Repeatable Read(可重复读): MySQL隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。
- Serializable(可串行化):最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。
存在的问题:
- 脏读:B事务读取到了A事务未提交的数据
- 不可重复读:一个事务中,两次读取的数据内容不一致(update导致)
- 幻读:一个事务中,两次读取的数据数量不一致(insert、delete导致)
对应隔离级别存在问题:
隔离级别 | 脏读 | 不可重复读 | 幻读 |
Read Uncommitted(读未提交) | ☑️ | ☑️ | ☑️ |
Read Committed(读已提交) | ☑️ | ☑️ | ✖️ |
Repeatable Read(可重复读) | ☑️ | ✖️ | ✖️ |
Serializable(可串行化) | ✖️ | ✖️ | ✖️ |