00:00
好同学们,咱们关于这四种隔离级别啊,咱们就说清楚了啊,嗯,这块呢,注意我这个单词的话呢,在上一页当中,我录完之后呢,发现呢,诶这个单词呢写错了,咱们这个呢叫read committed,注意啊,我写成叫red committed了,就是这个A呢少了那这个答案注意呢,呃,加上啊我这呢又重新的把这个呢重写了一下,然后把这个图呢又截过来了,这叫read committed啊,就是这个呢叫读未提交,这叫读已提交啊这个注意一下好,那么这儿呢,我们说呢,四种隔离疾病呢,是针对于circle标准当中做的一个规定,那么接下来的话呢,我们是不是要看看具体的这个数据库,它是如何来支持这四种隔离级别的。啊,怎么说,诶这呢有什么可讲的呢?诶注意这个circlecol标准中规定呢,不一定在不同的数据库当中都是完美的去支持的,你比如说呢,这个Oracle Oracle的话呢,它就只支持其中的这两种,一个呢叫做read,一个呢叫做S,而且你也能够想象得到,它只是这两个的话呢,那默认的隔离级别是不是就得他呀?啊,不可能是这个S了啊,因为这个并发性呢,实在是太差了,对吧?诶默认的叫读已提交。
01:02
Oracle呢就只支持这俩,那么咱们这个MYSQL的话呢,它这四个呢是都支持的。哎,这四个都支持的,而且呢,默认的隔离级别呢,叫做repeatable,也就叫做可重复读。诶,那么可重复读的话呢,意味着我们MYSQL呢,默认情况下呢,就可以解决脏毒的问题,可以解决不可重复读的问题,那实际上的话呢,我们这个MYSQL呢,这个可重复读的这样的一个隔离级别,它呢,呃也一定程度上呢,能够解决我们这个换读的问题了啊所以这呢,就是相较于我们这个呃,官方标准当中呢,还是有一些区别的,对吧?啊那这块的话呢,我们讲到后边这个MVCC的时候呢,咱们再去讲啊这呢,我们就先不过多的去说这个问题。好,那么咱们重点的话呢,肯定还是讲这个MY了,所以下边的话呢,我们来看一看这个MY,它是如何支持这四种隔离级别的。啊,OK,那首先的话呢,我们遇到的一个问题呢,就是说我们该如何查看刚才提到的说默认的隔离级别是什么啊,以及的话呢,我们该如何呢去修改这个隔离级别,对吧?呃,以及的话呢,咱们接下来呢,给大家去演示一下,在不同隔离级别下,呃,上面呢光讲这个理论了,那真实的情况下呢,是不是这样回事呢?呃,这个怎么叫脏毒呢?这个你能不能给演示一下啊,咱们接下来呢,通过这个代码呢,给大家去做演示,那我们就得,呃有能力呢,是不是去修改这个MYSQL的这个隔离级别才行。
02:19
对吧,好,咱们一个一个来说,首先的话呢,我们说第一个问题说如何呢,去查看麦斯库的默认的隔离级别,这呢提到一个版本叫做5.7.20,在这个版本之前,诶这个我们是查看这个变量呢,叫做TX叫isolation。啊,那5.7.20之后呢,这个不用这个TX了,那改成它的一个全称叫做transaction,所以这块有一这样的一个小的一个区别啊,这个大家注意一下,那另外的话呢,就是不管呢,是5.7.20之前还是之后,我们都还可以使用这样的一个系统变量啊,就是完整版的transaction isolation啊去做一个查看都可以。行,这呢是做一个查看来,那这块呢,我们就做一个演示啊,这一节的话呢,包括后边呢,我们去讲不同隔离级别下的这个效果的演示呢,咱们就在命令行这块去说了,诶我们可以开启不同的这个事物呢,比较方便的去做这个演示。
03:06
好,那么首先的话呢,咱们先做一个登录啊,这个ABC123,诶这是不是就登录成功了啊,那么接下来的话呢,我们就可以呢,去做这个查看了啊一种方式呢,叫做shows。哎,Like是吧,啊,刚才呢,我们提到呢,这个5.7.20之前呢,是叫TX叫isolation啊,那如果有的这个同学呢,嗯,这个5.7.20呢,用的比较溜了啊,你当时呢,应该都是这样查的,那在我们这个8.0当中,你要去查看的话呢,他倒是没报错啊,就是说你这个变量没有呗。对吧,诶这个不会报错的啊,你写错了,他就是说没有OK,那我这个呢,160其实用的也是五点七点,我没记错啊,应该是三级了,也不是二零之前的了,所以我也不在这演示了啊,就是你就知道有这样一个版本的情况,那现在的话呢,我们要想演示的话呢,你得这样写。哎,叫wherera boths,然后呢,怎么着啊,Like,哎后边呢,写成叫transaction啊写完整有说,哎呀,这个写的好麻烦呀,哎,但是这块呢,你得知道呢,完整版呢,是不是这个单词呢,就得是这样写的好回撤一下,此时的话呢,我们看到是不是叫repeat。
04:09
啊叫做读已提交,OK,这呢,就我们相当于查看的叫默认的,诶隔离级别。好,这个呢,我们就说到这了,哎哎,当然了,咱们不是还有一种方式呢,就是两个,这个艾服相当于我们的系统变量呗,哎,叫transaction。那叫isolation。哎,这样也可以是吧,哎,用哪种方式啊都行,这个这个都可以,好这呢我们就说到这儿,然后接下来的话呢,我们看一下如何呢,去设置MYSQ当中这个事物的隔离级别啊,那如何去设置呢?哎,大方向来讲呢,我们先说两种方式啊,这个两种方式,注意不是说这个格global跟session的区别,你先忽略掉这个事。啊,忽略掉这个事儿,然后呢,我们看后边这个呢叫set啊,Transaction空格isolation空格level,后边呢写一个隔离级别。那具体这个隔离级的级别的话呢,是不是从这四个里边选一个就行,那注意呢,我们这呢叫read空格UN committed read空格committed,当然了,你这个大写小写呢,这块都可以啊,都可以。
05:04
啊,关键字的话呢,我们说呢,建议大写,但是呢且小也能识别对吧?好,那接下来哎,或者的话呢,我们这个叫set,注意transition下划线等于哎单引号隔离级别啊这两个是是有区别的,这是两个单词,或者说是三个单词,我们这呢,是不是就只有一个单词。诶然后呢,这是单引号这样去写,然后这里边儿这个隔离级别呢,也是四个,但是呢,我们是用有一个这个中华线呢,诶来做了一个分格,而不是上面呢是空格,这个小细节呢,大家也要去注意一下。诶,这个小细节呢,要去注意一下啊,那么具体用的话呢,你用上边这个也行,用下边也行,看你自己心情了啊呃,我呢是建议呢是用下边这个,或者说我习惯上用下边这个啊,为啥呢?因为咱们这个变量的话呢,是不是叫就叫这个transaction下划线叫isolation了,那我就直接呢去设这个变量的值不就完了吗?哎,所以我就习惯上去用这种了啊,但是你知道了,这样写也OK,那要用这种的话,你注意我们这里边呢,放在这个值,那就是一个值了,所以呢,我们就用这个中华线呢,把它连接起来啊,这就是一个值一个值一个值啊这样的形式。
06:07
没问题是吧,好,那么接下来的话呢,我们再去说个点呢,就是提到了,呃,前边这块呢,呃,这个关于这个变量的话呢,它是一个格global级别的,还是一个session级别的啊,那这块呢,是有区别的。上面的也有是吧,我们就不提这个了啊,当然呢,下边演示的时候呢,我就以这个来演示,你愿意拿这个测试测试也可以的,好,那我们下边来说一下这个叫global跟session的这个区别,如果我们这块加的是global。啊,你注意啊,我们家是global啊,这边写的说当前已经存在的绘画无效了,诶你注意咱们做这个设置的时候呢,你首先是不是也得去获取数据库的连接,你也是当前的一个绘画,对吧?你在当前这个绘画,比如说叫session a中吧,你在这个绘画A中,然后呢,我们去做的这样一个设置,设置完以后的话,你注意对于我们当前这个session a啊,是失效的。啊,你要再查看的话呢,你你你原来是什么还是什么,哎,那我们对后期的一些这个绘画呢,它是起作用的,当你这个执行完以后,比如我又来了个session b。
07:05
哟,这个好像。有有点有点这个平常SB一起的怪怪的是吧?哼,哎,3B啊,这个你3B啊3C啊等等的,你后期的这些绘画的话呢,诶都是你这块设置好的,哎,注意前提是global的对吧?诶没问题的,或者你说呢,我把这个30呢,我就给他,诶退出了,然后我自己再重新进来,那其实你就相当于开启了新的绘画呗,诶那这时候呢,它就起作用了。诶大家注意哈,我们这个设置呢,是不是都是在这个内存级别的,那如果你把这个MYSQL这个服务器呢,给重启了,诶restart了,那这时候呢,是不是它又回归成那个最初的那个默认的情况了,对吧?诶这个要注意一下,好这个呢叫global,然后这个session呢,就是绘画级的啊,你在当前这个绘画当中呢,你把这个trans isol呢改了,改了以后呢,那你说我们当这个绘画呢,是不是后续的所有的事物呢,都就有效了,相当于都用你这个当前设置的这个了。啊,那如果呢,你是在呃,当前这个绘画当中,这个事务结束了,这个事务呢还没开启啊,在中间这块呢执行的啊,那对我们后续的这个事务呢,都是用你这个设置好的,那如果说呢,诶注意这是一种场景,哎,你在当今这绘画当中啊,这是一个事物,这个事物呢,Begin了,然后在这个事物当中,你这块设置的。
08:15
啊,那这时候呢,就涉及到我这个事物当中,那到底后续呢,用的谁啊,注意还是用你之前的这个。啊,你看我这写的,呃,该语句可以在已经开启的事物中间执行,但不会影响当前正在执行的事物,当你这个事物执行完以后呢,你再起个事物的时候呢,才是用你这个设置好的啊这块呢,还是用之前的。啊,这个就说清楚了,好,那说清楚之后呢,咱们下边呢,是不是要给大家做一个演示吧。好,那我们来看这个演示,呃,那目前的话呢,咱们都是默认的这个隔离级别,这是没有问题的,好,那下边我们做这个修改啊,咱们就要set一下,注意我先去演示这个叫global。Set global transaction这个isolation。啊,等于啊,这个我们去改成什么呀,咱们就要瑞的一个,注意我们这是一个中华线啊committed的吧。
09:05
诶,这样个方式好,这样呢,我们是不是就修改了,哎,那么修改完以后的话,你注意我们还在当前这个绘画当中,如果此时呢,我去做一个这个啊select是不是还是咱们啊,咱们说了对你当前会话呢,相当于是失效的对吧?好,那我们再重启一个会啊这呢我们就再开一个啊再开一个我这块呢,写上叫MS和杠U,哎root-P啊注意这块我们还是用root用户登录是没问题的啊,这是一个新的一个会话了,然后此时的话呢,我们去呃select一下。Transaction。Isolation。诶,那注意你看我这会儿要查看的话呢,是不是应该叫读已提交啊。哎,因为呢,针对于咱们,哎后续的这个绘画的话呢,它就起作用了啊没问题,好,那再回过来那也可以呢,是不是我在这块呢,做一个quit退出了,退出以后呢,你再去登录一下。哎,登录以后呢,我再去啊select啊transaction isolation。
10:06
诶,那这时候呢,是不是也应该叫read committed啊,因为呢,你这块退出呢,你再登录进来,相当于又是一个新的会画了嘛,所以对于我们后续的啊,这些会画呢,都是启作用的啊,都是启动的啊,但是的话呢,诶刚才我讲到了,就是你要是把我们这个MYSQL服务器呢给重启了,然后呢,你再去查看的话呢,是不是它就应该又回归到我们默认的情况了,因为咱们这里边儿格罗布的修改,你再牛是不是也只是内存级别的呀?好,那这块我们就做这个事儿啊,咱们来一个呢叫。System control restart。Restart,哎,叫MYD啊,这样我们做个重启。嗯。好,这个操作呢,大家应该还记得是吧?啊重击完以后的话呢,我们再回顾到回顾到这个任意的一个,呃,这个这个这个这叫什么?呃,绘话当中是吧,我们再去呢,诶,Select transactionol好,注意看啊,走起这块呢,你看是不是又恢复成叫repeatable了啊,应该理解啊,我要去看这话呢,是一样的是吧?哎,也会变成了叫repeatable了。
11:08
啊,这个清楚啊,这个我们就是global这样的一个级别的情况,那么接下来的话呢,我们去演示一下,这个叫session级别啊,咱们去赛一下。Session transaction。啊,Isol啊,等于啊,比如这块我们设的叫read啊,这个中间这个划线啊an啊committed,哎,注意我们这个M呢是俩,T也是俩啊,哎抽起,那我们就针对当前的这个绘画呢,我们设置了一下这个隔离级别,好,那此时的话呢,我们再去做这个查看,诶这个时候呢,就是改成叫read committee了,它对我们这个当年当年绘画呢,就起作用了。哎,注意这时候呢,它就起作用了,那我们在这个里边去查看呢,呃,这个当然呢,还是呃是不是。啊,因为呢,人家是在人家这个绘画当中修改的,跟你这个绘画呢,就一点关系都没有了啊这个注意一下行,那这个呢就清楚我们该如何呢去修改啊,这个呃叫隔离级别啊,你看你到底是想改这个当前绘画的呀,还是想改这个global啊,哎,这个你要清楚啊好,这个呢,我们就说到这儿。
我来说两句