总结事务的隔离级别

    技术2025-07-21  18

    事务的隔离级别一般分为四种:

    1.read_uncommited(未提交读取)

    2.read_commited(提交读取)

    3.repeatable_read(可重复读取)

    4.serialzable(序列化)

     

    下面详细描述:

    read_uncommited:

    事务a修改了表,未提交,另一个事务就能读取这个被修改了的记录了。

    会出现的问题:读脏数据,不可重复读,幻读。

     

    所谓读脏数据就是:事务b修改了某个记录1改为2,事务a读了这个记录为2,这时事务b出现问题,没有提交而回滚了,这时事务a就读了一个错误的数据2,应该为1

     

    read_commited:

    事务a修改了表,必须提交以后,事务b才能读到这个被修改了的记录了。

    解决问题:读脏数据

    会出现的问题:不可重复读,幻读

     

    所谓不可重复读:事务a读了一个记录为1,事务b修改了这个记录为2且提交,这时事务a读到的就是2了,但是事务a并没有结束,同一个事务内同一个记录怎么可以读到两个不同值呢?这就是不可重复读

     

    repeatable_read

    事务a修改了表,提交后,事务b不管读到的这个记录是否被修改,它始终都读到的是原来的内容。

    解决问题:读脏数据,不可重复读

    会出现的问题:幻读。

     

    所谓幻读:就是事务a读取了一个记录为1,事务b修改了这个记录为2,提交了。问题出来了,事务a并不知道这个记录已经被修改成2了,还是在操作这个1,当然这就不对了。

     

    serialzable

    事务a操作完成后才能操作事务b

    解决的问题:读脏数据,不可重复读,幻读

     

     

    最新回复(0)