隔离性: 一个事务可以读到另外一个事务提交的数据,可能在这个事务中两次读到的数据不一样;rc
一致性: 一致性指事务将数据库从一种状态转变为下一种一致的状态。在事务开始之前和事务结束以后,数据 库的完整性约束没有被破坏。
例如,在表中有一个字段为姓名,为唯一约束,即在表中姓名不能重复。如果一个事务对姓名字段进行了修改,但是在事务提交或事务操作发生回滚后,表中的姓名变得非唯一了,
这就破坏了事务的一致性要求,即事务将数据库从一种状态变为了一种不一致的状态。因此,事务是一致性的单位,如果事务中某个动作失败了,系统可以自动撤销事务——返回初始化的状态
RC:解决脏读(读取到事务未提交的数据),但是不可重复读,不过可以容忍,因为读到的都是事务提交后的数据;
RR: 解决脏读,可重复读,MVCC + GAP间隙锁;
MVCC: mysql 都RR是快照读,但是rc和rr的快照读不一样
rc:只锁行,读取最新的快照(A事务读取数据,未提交,读到数据a = 1,B事务修改数据set a = 2,提交,A事务读取到a = 2;A事务两次读取的数据不一样,破坏了隔离性。)
rr:锁间隙和行,读取时间最早的快照(A事务读取数据,未提交,读到数据a = 1,B事务修改数据set a = 2,提交,A事务读取到a = 1;A事务两次读取一致,读取的是最新的快照。)