php 级别的解决方案,事务级别 · PHP开发笔记&解决方案 · 看云

# 事务级别

三类数据读问题

~~~

1.Dirty Read(脏读)

事务 A 读取了事务 B 未提交的数据,并在这个基础上又做了其他操作。

2.Unrepeatable Read(不可重复读)

事务 A 读取了事务 B 已提交的更改数据。

3.Phantom Read(幻读)

事务 A 读取了事务 B 已提交的新增数据。

~~~

两类数据更新问题

~~~

1.第一类丢失更新

2.第二类丢失更新

~~~

### Dirty Read(脏读)

余额应该为 1100 元才对!请看 T6 时间点,事务 A 此时查询余额为 900 元,这个数据就是脏数据,它是事务 A 造成的,明显事务没有进行隔离,渗过来了,乱套了。

所以脏读这件事情是非常要不得的,一定要解决掉!让事务之间隔离起来才是硬道理。

![](https://box.kancloud.cn/ec577638db9d43143579d5d848e2e162_745x286.jpg)

### Unrepeatable Read(不可重复读)

事务 A 其实除了查询了两次以外,其他什么事情都没有做,结果钱就从 1000 变成 0 了,这就是重复读了

这种现象基本上是可以理解的,但在有些变态的场景下却是不允许的。

![](https://box.kancloud.cn/d3ce9f75a5a2983cc96cfdcba3e6ea4f_746x229.jpg)

### Phantom Read(幻读)

银行工作人员,每次统计总存款,都看到不一样的结果。不过这也确实也挺正常的,总存款增多了,肯定是这个时候有人在存钱。

![](https://box.kancloud.cn/68268667adea935e8da8998bad9fac0f_746x201.jpg)

### 第一类丢失更新

A事务撤销时,把已经提交的B事务的更新数据覆盖了。这种错误可能造成很严重的问题

![](https://box.kancloud.cn/9a7d1963fac776bc57063443ec63002e_746x287.jpg)

### 第二类丢失更新

B事务覆盖A事务已经提交的数据,造成A事务所做操作丢失

![](https://box.kancloud.cn/77f0bb598da5458324b3abbc684499c3_748x260.jpg)

### 事务隔离级别

从上往下,级别越来越高,并发性越来越差,安全性越来越高,反之则反

MySQL 数据库的默认事务隔离级别就是 READ\_COMMITTED

![](https://box.kancloud.cn/0614d195f28a3551d172eb4deefa3e3e_745x145.jpg)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值