MySQL中的隔离级别有哪些? 为什么RR解决了不可重复读,那为什么还需要RC?
MySQL中一共有四种隔离级别,分别是:
读未提交指的是一个事务还没有提交,它做的变更可以被别的事务看到。
读已提交指的是一个事务提交之后,它做的变更才能被其它事务看到。
可重读读指的是一个事务在执行过程中,读看到的数据始终和事务刚启动时看到的数据一致。
串形化指的是会对这条记录加上读写锁,多个事务再对这条数据进行多写操作的时候,如果发生了读写冲突,后访问的事务必须等到前一个事务提交之后才能执行。

虽然RR解决了不可重读,但是RC依然有存在的价值。
首先RC的核心特点是:只能读取到别的事务已经提交了的数据,区别在于创建ReadView的时机不一致,在RC隔离级别下,每次查询都会重新生成ReadView,而RR隔离级别下一个事务只会维护一个ReadView,保证了多次读取到的数据一致。
很多高并发业务下依然选择RC隔离级别,因为RR隔离级别为了保持一致性需要维护更长版本的历史数据,对于互联网业务来说,更关注吞吐量和并发量,因此RC是一个更好的选择。
