关于sql脏读不可重复读幻读清晰易懂

标题

定义:
  1. 脏读:
    对于两个事务 T1, T2, T1 读取了已经被 T2 更新但还没有被提交的字段。之后, 若 T2 回滚, T1读取的内容就是临时且无效的。
  2. 不可重复读:
    对于两个事务T1, T2, T1 读取了一个字段, 然后 T2 更新了该字段。之后, T1再次读取同一个字段, 值就不同了。
  3. 幻读:
    对于两个事务T1, T2, T1 从一个表中读取了一个字段, 然后 T2 在该表中插入了一些新的行。之后, 如果 T1 再次读取同一个表, 就会多出几行。
1.脏读:

举例:以淘宝为例:
①某Customer(淘宝客户)正在浏览Boss(网店老板)的某个goods(商品),看到价格为20元 *此时并未离开该商品价格页面(未断开连接或是刷新);
②Boss(网店老板)去修改某个商品goods的价格为30元,只改了数据但是没有点即确认(未提交),
同时该Customer(淘宝客户)看到该goods(商品)价格变为了30元;
③Boss(网店老板)取消修改该商品goods的价格的操作。
我们认为在②中该Customer(淘宝客户)读到的价格为无效的,也就是脏读。

2.不可重复读:

举例:以淘宝为例:
①某Customer(淘宝客户)正在浏览Boss(网店老板)的某个goods(商品),看到价格为20元 *此时并离开该商品价格页面(断开未连接);
②Boss(网店老板)去修改某个商品goods的价格为30元,并点击了确认按钮(已提交),
同时该Customer(淘宝客户)看到该goods(商品)看到该goods(商品)价格变为了30元。
这种情况就是Customer(淘宝客户)看到价格前后不一样了,这就是不可重复读。

3.幻读:

举例:以淘宝为例:
①某Customer(淘宝客户)在Boss(网店老板)的店铺里搜索某goods(商品),但是没有搜索到 *此时并未离开该商品价格页面(未断开连接);
②Boss(网店老板)在店铺里上架了这个goods(商品),并且点击确认按钮了(已提交),
同时该Customer(淘宝客户)看到店铺有了该goods(商品);
这种情况就是Customer(淘宝客户)看到多了一件新的商品,这就是幻读。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值