隔离性: 一个事务可以读到另外一个事务提交的数据,可能在这个事务中两次读到的数据不一样;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 事务两次读取一致,读取的是最新的快照。)
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于