mysql事务隔离级别解读

 

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

1.读未提交(read uncommitted)

2.读提交(read committed)

3.可重复读(repeatable read) - default

4.串行化(serializable )

 

二、场景分析:

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

mysql事务隔离级别解读

2.进行事务并发

mysql事务隔离级别解读

结果分别是

读未提交:v1=2,v2=2,v3=2(B修改后,不需要提交事务,A就可以查到最新值)
读提交:v1=1,v2=2,v3=2B(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.****.net/daiyudong2020/article/details/90552734

 

End