vlambda博客
学习文章列表

温习总结-事务隔离级别、cap理论

今天再次温习了一下之前的技术知识:

事务的隔离级别

数据库事务的隔离级别有4种,由低到高分别为Read uncommitted(读未提交) 、Read committed (读已提交)、Repeatable read (重复读)、Serializable(序列)。
  1. Read uncommitted

    a事务可以读取到b事务还未提交的数据改动。读取到b事务还未提交的数据就是脏读,因为正在操作改动数据的事务可能会回滚数据改动,a事务读取到的数据就是脏数据

  2. Read committed

    a事务读取数据后,直到a事务结束前,b事务可以对读取到的数据做修改,a事务读取不到b事务未提交的改动,但可以读取已经提交的数据改动,这样就会引起a事务在b事务对数据改动前和后读取到的结果不一致。这个隔离级别可以解决Read uncommitted脏读问题,但解决不了a事务内两次读取数据返回了不同结果的问题,被称为不可重复读

  3. Repeatable read

    为解决上一个隔离级别的不可重复读的问题,a事务开始后读取数据的时候加锁,锁定其他事务对读取到的数据修改,b事务在修改a事务已经读取的数据的时候需要等待,直到a事务结束。这样通过加锁读排斥更新的方式解决a事务内两次读取数据不一致的问题。事务加锁只针对更新操作,对于插入操作无法避免,也就是无法解决幻读的问题。Mysql的默认隔离级别就是这个级别

  4. Serializable

Serializable 是最高的事务隔离级别,在该级别下,事务 串行化顺序执行 ,可以避免脏读、不可重复读与幻读。但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用。

CAP分布式理论

CAP原则又称CAP定理,指的是在一个分布式系统 中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。