Mysql事务隔离性、脏读、幻读

1、场景

在高并发的场景下(例如像商品扣库存的操作)很容易出现各种问题。
这种情况下,有些人会选择利用事务去解决。下面说说事务的不同的隔离性会出现各种不同的问题。

2、事务

事务共有四大特性,分别是原子性、一致性、隔离性、持久性
就简单说说隔离性吧。隔离性分为读未提交、读已提交、可重复读、串行化

1)读未提交:

两个事务A、B开启,去操作同一条数据,A将这条数据修改了,但是还没有commit。B去查询这条数据,查询到的是A已经修改了的这条数据,B查询到结果以后A发现数据有问题,将事务回滚了,B再去根据这条查出来的数据进行业务处理。就会出现脏读的问题。

2)读已提交:

两个事务A、B开启,A事务先查询了一条数据,B事务在A查询之后将这条数据更新了一下,A事务在事务结尾的时候又查询了一次这条数据。造成了一条数据在一个事务里面不一致。这是不可重复读的问题。

3)可重复读

两个事务A、B开启,A去查询数据,查询的条件是id between 1 and
10.但是数据库里面只有1,3,5,7,9的数据。所以A查出来的只有五条记录。但是B在事务中将2,4,6,8,10的数据插入到数据库里面了,还没提交,这也就是A为什么只查出5条记录。这就是幻读。

4)串行化

事务所有的操作都会对数据进行锁死,隔离开来。缺点是很慢很慢。

事务隔离级别脏读不可重复读幻读
读未提交
读已提交×
可重复读××
串行化×××
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值