标题
定义:
- 脏读:
对于两个事务 T1, T2, T1 读取了已经被 T2 更新但还没有被提交的字段。之后, 若 T2 回滚, T1读取的内容就是临时且无效的。 - 不可重复读:
对于两个事务T1, T2, T1 读取了一个字段, 然后 T2 更新了该字段。之后, T1再次读取同一个字段, 值就不同了。 - 幻读:
对于两个事务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(淘宝客户)看到多了一件新的商品,这就是幻读。