事务的隔离性

数据库原本c的值为1

image-20220928113353148

不同隔离级别的结果

  • 隔离级别为读未提交(read uncommitted):一个事务还没提交时,它的事务就能被别的事务所看见。

    事务B未提交,但结果已经被事务A所看见。 V1=2 V2=2 V3=2

  • 隔离级别为读提交(read committed):一个事务提交之后,它的结果才能被其他事务所看见。

    V1=1 V2=2 V3=2

  • 隔离级别为可重复读(repeatable read): 一个事务执行过程中看到的数据,总是和这个事务在启动时看到的一样。并且,未提交的变更对其他事务也是不可见的。

    V1=1 V2=1 V3=2

  • 隔离级别为串行化(serializable):对于同一行记录,“写”会加“写锁”,“读”会加“读锁”。当出现读写锁冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行。

    在事务B将1改成2时锁住,直到事务A执行完成,事务B才能继续执行。 V1=1 V2=1 V3=2