温习总结-事务隔离级别、cap理论
今天再次温习了一下之前的技术知识:
事务的隔离级别
Read uncommitted
a事务可以读取到b事务还未提交的数据改动。读取到b事务还未提交的数据就是脏读,因为正在操作改动数据的事务可能会回滚数据改动,a事务读取到的数据就是脏数据
Read committed
a事务读取数据后,直到a事务结束前,b事务可以对读取到的数据做修改,a事务读取不到b事务未提交的改动,但可以读取已经提交的数据改动,这样就会引起a事务在b事务对数据改动前和后读取到的结果不一致。这个隔离级别可以解决Read uncommitted脏读问题,但解决不了a事务内两次读取数据返回了不同结果的问题,被称为不可重复读
Repeatable read
为解决上一个隔离级别的不可重复读的问题,a事务开始后读取数据的时候加锁,锁定其他事务对读取到的数据修改,b事务在修改a事务已经读取的数据的时候需要等待,直到a事务结束。这样通过加锁读排斥更新的方式解决a事务内两次读取数据不一致的问题。事务加锁只针对更新操作,对于插入操作无法避免,也就是无法解决幻读的问题。Mysql的默认隔离级别就是这个级别
Serializable