码迷,mamicode.com
首页 > 编程语言 > 详细

事务隔离性

时间:2018-01-10 16:52:26      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:事务隔离性

声明:本栏目所使用的素材都是凯哥学堂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(可串行化)

事务隔离性

标签:事务隔离性

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
凯哥学堂
加入时间:2016-10-07
  关注此人  发短消息
java学习视频下载:www.kaige123.com
凯哥学堂”关注的人------(0
凯哥学堂”的粉丝们------(1
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!