四种隔离级别
为了解决事务并发带来的问题,才有了事务规范中的四个事务隔离级别,不同隔离级别对上面问题部分或者全部做了避免。
隔离级别 | 解决的问题 |
读未提交(Read Uncommit) | |
读已提交(Read Committed) | 解决脏读 |
可重复读(Repeatable Read) | 解决不可重复读 |
串行化(Serialization) | 解决幻读 |
不可重复读和脏读的区别是:脏读是某一事务读取了另一个事务未提交的脏数据,而不可重复读则是读取了前一事务提交的数据。
幻读和不可重复读都是读取了另一条已经提交的事务(这点就脏读不同),所不同的是不可重复读查询的都是同一个数据项,而幻读针对的是一批数据整体(比如数据的个数)。
脏读的解决方式,事务提交才写入,之前都只是写事务日志。
解决不可重复读mysql 多版本控制参考这位大佬文章挑灯夜读——MySQL多版本控制_米店不卖你的博客-CSDN博客_mysql版本控制
幻读就厉害了,针对得不是一条而是一批数据,解决这个问题,就得对这一批数据加锁。