目前互联网大厂MySQL使用最多的隔离级别是什么?
可能有人就认为是MySQL默认的隔离级别RR,可重复读。可重复读多好啊,解决了脏读,不可重复读问题,又有next-key lock,可以很大程度上避免幻读问题。
RC,读已提交,多不好啊,仅仅解决了脏读问题,存在不可重复读,幻读的问题。
但是,实际上使用最多的隔离级别是RC。
为什么呢?
首先要纠正一个观点:不可重复读,幻读,并不是什么严重的问题。
不可重复读,幻读,只是两种现象,并不是什么错误。
不好的方面:这两者违背了事务的隔离性
好的方面:很真实,真实的反映了数据的变化,变迁。RC,就是真实的反映了当前数据的最新状态。别的事务的修改,本事务能够知道。隔离级别越低,速度肯定是越快的。
但是有些情况,我们就是不想被其他事务影响,应该怎么办呢?
可以在代码层面解决。幂等校验,强制加锁。
那为什么不使用RR呢?
因为 RR 隔离级别和Binlog的Statement格式,才能很好的配合,才不会出现主从数据不一致的问题。
MySQL 5.0 版本之前,Binlog 只有Statement格式。直到MySQL 5.1 版本,Binlog引入了 Row格式,还引入了Mix格式。
RC 必须要与 Row 格式配合使用。
目前互联网大厂 MySQL 使用最多的隔离级别是什么?
于 2023-05-26 17:20:00 首次发布