00:00
呃,今天这堂课呢,就给大家演示一下这个换读的产生,在默认的可重复读这个隔离级别下,嗯,换读是怎么产生的,并且呢,在这个买8.0里头,呃。如何去这个避免呢?这就是今天。呃,这个这这堂课的主要内容。啊,目前呢,嗯,大家在面试中呢,可能会经常会问到这个问题,这个买是否解决了,这个换读。那这里呢,正确答案呢?就是说解决了啊,快照读的模式下的换读,如果是当前读没解决。啊,现在呢,给大家演示一下,那么我现在呢,开启两个绘画。那么呢,隔离级别都是默认的啊,可重复读这个隔离级别。啊,我现在先给他插入,我现在先不开启,那个是我呢,先给他先插入一条数据一啊。
01:02
我们来演示。好,那现在呢,我们就开启事物。Star。啊,开启15了,那现在呢,我插入一条数据二。啊,因为我没有提交,这里没有commit提交,所以这里啊,你肯定是看不见的。是对吧,你看不见刚才那这条数据二。你要看见了。那说明就是产生脏毒了,对吧。那么呢,这里我提交。那这里呢,依然是看不见。因为呢,我们的隔离级别呢。是这个离别可重复读。如果是提交读。嗯,RC这种隔离级别,那么这时候你就能看见了。
02:04
那么呢?这个。继续刚才,回到刚才这个话题,那怎么能在这种隔离级别下产生换读呢?那你只需要什么呀?用当前读。后面加一个full update。这种形式你能。在事物里头就能就能看见刚才那条那个数据二了。就刚才这条数据二了。这时候呢,就叫幻毒了,产生幻毒了,回车一下就能看见。对吧。你这个。这个就叫那个快照读,呃,当前读。不加for update呢,就是快照度。看这两个区别。这是当前读。啊,这个呢,就快照读。那么呢,在买水果8.0里呢?嗯,还有一个就是这个update。啊,比如说T1啊,我的ID。
03:01
ID。等于ID加上十,那这个时候这个呢,Update呢,它也叫那个当前图。For update和update更新这些,这些都叫当前图,它回车以后同样呢同样呢会更新两条记录,我们可以看一眼。对吧。还是?还是能看见刚才那个。啊,那么呢。先给他回滚,掉在8.0里,怎么去避免这个呢?先退出啊。那么演示一下这个MYSQL8.0,这是我最新版啊。8.0里头。
04:01
怎么去避免这个换毒呢?我们首先还是先开启正常的事物会话A,开启正常的事物啊。那绘画币呢?这里变化了一下,叫做。后面加一个read。嗯,这叫只读事物,在只读事物中你就不能使用当前读了,否则就会报错,嗯,到时候看一下演示,我们先正常的开启这个事物啊,哎,这是开启只读事务了,那么呢,我们现在在绘画A上。插入一条数据三啊。哦。这里你我因为我没提交这里你你是看不见的,对吧。那么我这里提交。在可重不读这个级别,你仍然是看不见的。用这个,呃,快照读。这时候呢?
05:01
我们后头如果要加一个update,刚才我们演示的是可以看得见的,那么现在呢?在8.0里呢,开启一个只读事务,开启这个只读事事务以后,你再执行这个当前读这个命令就会报错,会抽一下看一眼。你看到没有。在这个只读事物里头所有的。啊,当前读都会失败,包括更新删除,还有这个for update操作啊都会失败。这个呢,就避免了这个产生这个换毒这个问题了。这个呢,呃,如果今后你要面试呢,你可以跟面试官说一下,这个买8.0有一个只读事务。啊,这个就是一个面试的一个一个题的解答。
我来说两句