mysql事务隔离级别解读

    xiaoxiao2023-11-28  151

     

    一、mysql事务隔离级别,有几种?

    1.读未提交(read uncommitted),存在脏读、幻读可能

    2.读提交(read committed),不会脏读,存在幻读可能

    3.可重复读(repeatable read) - default,不会脏读,存在幻读可能

    4.串行化(serializable ),不会脏读、幻读

     

    二、场景分析:

    1.假设数据表 T 中只有1列,存在1行记录

    2.进行事务并发

    结果分别是

    读未提交:v1=2,v2=2,v3=2(B修改后,不需要提交事务,A就可以查到最新值) 读提交:v1=1,v2=2,v3=2(B修改后,需要提交事务,A才可以查到最新值) 可重复读:v1=1,v2=1,v3=2(可重复读的意思是,事务A在开始时,复制了一份V1的镜像值,后续都是读镜像值) 串行化:v1=1,v2=1,v3=不确定 (事务B必须在事务A执行完才可以执行)

    三、基于可重复读的默认事务隔离级别,如何解决秒杀商品的超卖问题。

    mysql有个概念称为"当前读",current read,也就是说更新数据的语句中的读,都是读最新值。假设v是库存,语句如下

    update v=v-100 where v>=100;

     

    原文出自:https://blog.csdn.net/daiyudong2020/article/details/90552734

     

    End

     

    最新回复(0)