凯哥学堂

搜索

凯哥学堂

事务隔离性

2018-1-10 19:01| 发布者: 可可| 查看: 1| 评论: 0|原作者: 追梦|来自: 凯哥学堂VIP17班

凯哥学堂 首页 资讯 学习笔记 数据库 查看内容

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。

事务隔离性:

Read Uncommitted(读取未提交内容)

比方说火车票售票,拿到的车票是第一张,拿到车票之后立马修改掉,改成锁定状态,就是不一定买

另外一个事务也说要查询出车票1张,这时候查询也是查询出前面座位一的票出来了,因为它那边的事务还没提交,所以它看到的是没有修改的数据,其实那条数据已经被修改了,如果你这边也发出个update修改的话就会卡住

image

如下图:

左边的事务查询出来一修改1号票,但是另外一边的事务查询1号票仍然是显示未售出,其实那张票已经被别锁定了

所以你只能看到提交后的数据,不能看到未提交的数据,因为你左边那个事务未提交,所以你看到的是没有提交前的数据,你已经把第一张票给锁定了,我应该拿第二张票给你,因为你第一张票不一定能出票成功,要别人放弃那张票你才能出票成功

image

如下图:所以就会出现一个读取未提交数据隔离事务,又称之为脏读模式,就是说你读取的数据不一定是有效的数据,输入以下这条语句就改成脏读模式了

set tx_isolation='READ-UNCOMMITTED';

改成脏读模式之后,这时候查询就不会查询出1号了

image

如下图,如果你锁定2号、它查出来的就是3号、如果你锁定3号、它查出来的就是4号

image

Select @@tx_isolation 查询当前事务隔离级别 默认是可重读级别

image

脏读模式有好有坏:

好处 售票可以及时看见状态

坏处 就是数据有可能会回滚

如下图:脏读的坏处就是,好比以下财务例题,财务这个事务修改金额为一万,员工那边查询有一万块钱,然后财务来一个rollback 然后你在查询就变成0了,这就是脏读不好的一点

image

Read Committed(读取提交内容)

Repeatable Read(可重读)

Serializable(可串行化)


上一篇:视图和事物

关注我们


微信

微博

QQ