silencehgt 2020-07-04
隔离级别 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|
READ UNCOMMITED(未提交读) | Yes | Yes | Yes |
READ COMMITED(提交读) | No | Yes | Yes |
REPEATABLE READ(可重复读) | No | No | Yes |
SERIALIZABLE(可串行化) | No | No | No |
在这个级别下,事务的修改对其他事务是可见的,不管该事务有没有提交。脏读、不可重复读和幻读都会发生。
在这个级别下,只读其他事务提交后的数据,但可能两次查询得到不一样的结果,可以解决脏读的问题。
在这个级别下,满足同一事务多次读取数据一致,只会出现幻读。Mysql
的存储引擎 InnoDB
使用 next key locking
解决幻读的问题。注意这是 Mysql
默认的隔离级别。
在这个级别下,事务串行执行,它会对所有读到的数据加锁,所以没有任何数据不一致的问题,因此性能也很差。