用肥宅快乐水解释mysql四种隔离级别

用肥宅快乐水解释mysql四种隔离级别

mysql中有四种隔离级别

  • read uncommited (读取未提交内容)
  • read commited(读取提交内容)
  • repeatable read (可重读)
  • serializable(可串行化)

在这里插入图片描述

read uncommited

不常用,因为他的效率也没有比其他种高到哪里去了
三种数据读取问题:脏读、不可重复读、幻读都会发生,此处只有read uncommited才有的脏读。

脏读

所有事务都可以看到其他未提交事务的执行结果。

例子

在一个开着灯的房间,有一瓶肥宅快乐水,阿梓和阿榆开启喝同一瓶肥宅快乐水这一事务。这瓶快乐水被喝了多少,对于彼此都是可见的。每喝一口,另一个人都看在眼里。

read commited

所谓的read commited(可重复读),就是事务A在两次select语句中可能会查到不同的结果。
事务B提交后,事务A中查询到的结果会发生变化。

例子

小房间规定要蒙眼。喝完快乐水后直接被请出房间。
阿梓和阿榆进房间后看了一眼快乐水还剩多少,然后被蒙上了眼。
然后他们开启喝快乐水这一事务。吨吨吨。
阿梓喝了几口之后,觉得喝得差不多了,就大吼一声“肥宅快乐水真**好喝,我喝了三口!”(震声)(提交事务)然后离开了房间。
然后阿榆就听到了这一声吼,才知道了阿梓喝了三口。(只能知道已经完成提交事务的数据变更)
然后才能发现我靠???怎么喝完了,那我刚才在喝空气???

repetable read

mysql默认的隔离级别,但是会发生幻读。

幻读

所谓的幻读,就是事务A中,事务B修改并提交了事务,而在整个事务A中,
每次查询到的结果都是开启事务时,数据库的状态,事务A提交后。开启事务C,才能阅读到事务B提交的内容。

例子

小房间规定要蒙眼堵耳朵。
阿梓和阿榆进房间后看了一眼快乐水还剩多少,然后被蒙上了眼,堵上了耳朵。
然后两个人就开始吨吨吨。
阿梓喝了几口之后,觉得喝得差不多了。然后大吼一声:“肥宅快乐水真(龙门粗口)好喝,我喝了三口!”(震声)(提交事务)。然后离开了房间。
但是阿榆听不见,他被堵住了耳朵。而且阿榆需求很大,他还在喝,就算此时快乐水已经没了。因为阿榆觉得:我蒙上眼之前还有这么大一瓶,是吧,我应该喝不完的。
然后阿榆觉得喝(其实是喝空气)得差不多了,然后大吼一声:“肥宅快乐水真(龙门粗口)好喝,我喝了三口!”(震声)。然后被请出了小房间。

servilazble

好啦,来到最后一种了。
这是最终的boss,是最高的隔离级别。它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。
强制事务排序,在事务A对某张表操作时,若没有提交,事务B倘若想对这张表进行操作,则会等待,等待事务A完成,此处有等待超时的机制。

例子

小房间规定要每次只能有一个人进去喝快乐水。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值