00:00
那关于这个数据恢复的这个例子啊,咱们就说到这儿了,然后下边呢,我们关于这个,哎冰老日日啊,咱们说一下呢,如何去删除啊,如何呢去删除,就是说呢,如果我们保存的这个二进制的日志呢,比较多的时候呢,还是会占用这个四盘空间叭较大的,那我们呢,就可以考虑呢,对他们进行删除,但是这个删除的话呢,我们分成两种这个场景啊,一种的话呢,就是我们删除部分的数据啊,另外一种呢,就是全删掉啊,那很显然的话呢,我们就不能够全删掉是吧,全删掉这个事儿的话还是很严重的哈,哎,当然呢,我们从这个讲解上来讲呢,咱们也说一下如何呢去全删。行,那么部分删除的话呢,我们使用的这个叫pge啊,就是清除的意思啊pge master locks哎有两种呢删除的方式啊,一种呢,就是指定这个文件名啊,因为呢,咱们知道文件名呢,它都是,呃,那个后缀的数值呢,是不是依次递增啊,诶你可以呢,指定一个名,然后比如说呢,我们把这个是00005前面呢都不要了,诶我们就可以呢,通过这种方式,你也可以指定个时间啊,在这个时间之前的呢,我们就都不要了啊也可以的。
01:01
诶两种方式都行啊好,那么我们先说这种方式吧,删除指定的这种啊来回过来,首先的话呢,我们先呢去通过这个叫show啊binary啊,这个叫locks,我们先查看一下当前呢,我们有的这个啊,Blog的这个文件啊,一共呢就三三呢,咱们感觉有点少啊,我们这么着flash呢,这个locks以上。啊,走起再走起再走起,再来一次吧,好,那这块呢,我们再去做一个这个show banarylos,诶我这呢,是不是这个文件就多一些了,没问题,好那么在这种场景下呢,咱们就删除,比如说呢,叫0000这个三啊这个之前的啊,我们就可以这样去做啊,叫做P这个master。哎,Master loves,然后呢,To啊这呢有个to to呢,后边呢,比如你想删除这个三之前的,注意这时候这个三会不会给我们删了呀。哎,他之前的啊,所以三呢不会给我们删啊行,那这呢我们就写好以后呢,哎,走起。然后呢,我们再去做一个收好大家你会发现在三之前呢,是不是就把把我们给删掉了。
02:01
哎,没有问题,好,这个呢,我们就是删除,按照这个文件名来删的啊,如果这个时间的话呢,我就不演示了,咱们说一下这个时间的话呢,首先你得能够确定一下你这个时间到底是这个不同的文件啊,这个时间到底是多少,在咱们这呢,没有显示的对吧?诶那怎么着呢?诶咱们这有这样个指令啊,还是这个MY狗belog,我们那叫no啊default,然后呢,把你这个对应的啊这个文件,比如我们其实你想删这个呃文件它呃这个时间之前的是吧?诶你呢,把这个文件呢放在这儿,然后呢就能够查看它的时间,然后呢,我们就可以呢使用叫master locks before,注意这个不是to了。啊,上面这个我们用的是to是吧,这个呢叫before,然后呢,把你这个时间呢往这一放,哎,这个时间之前的呢,就都干掉了。行说一下就行啊,啊这是一种场景,然后的话呢,我们再说一个呢,叫做啊这个reet master啊直接呢,就这个指令,你也不需要指定这个名啊,还是时间了,因为呢就全给删掉了。啊,那么大家你想一想,我们开发中会这样用吗?显然不会嘛。
03:02
这还用多说吗?是吧,啊,那如果说你从山谷到跑路,你怕你自己还有回头路,怎么办呢?你把这个呢也给他清掉,清掉之后呢,你这回跑你肯定是绝对不能回去了。是吧,诶因为呢,你呃,就这样老板说呢,你要说你一不小心把数据库删了是吧,假设呢,还能原谅啊,那你现在把恢复的这条路都给断掉了,那你就是有意的。反正就是该坐监狱了是吧?啊,所以这个呢,咱们一般不用啊,当然这块咱们教学嘛啊,演示一把,大家要不这个生产环境当中也不敢去演示嘛,咱们在这呢爽一把是吧?呃,那么我们刚才呢,查看了一下都有啊,所以我们就可以通过呢,叫做reset一下这个master是吧,Master好走起。那执行完以后的话,我们再去收一下,你看就没有了啊,那么此时的话呢,我们又会从这个零零一开始,你看这个默认的大小,一开始的时候就156,哎就这么个场景啊,相当于呢,之前呢,我们就都给清掉了,哎,那你想呢,去通过哎blog这种方式呢,去做数据的恢复,那就白扯了啊。
04:00
好,那么关于删除呢,我们就说到这儿,嗯,那么咱们在讲这个更深入的二进制的这个,呃,内容之前呢,咱们最后呢,相当于是做一个小结啊,看一下我们这个blog,它的一些使用场景,通过前面的讲解呢,我们知道啊,通过这个二进制的日志啊,我们通过数据库的一个全量备份啊,比如说有个底儿,在这个基础之上呢,我们再通过这个冰烙这个文件的这种增量的信息啊,我们就能够完成数据库的一个无损失的一个恢复了。诶,这个我们刚才呢,也给大家做了一个演示啊,都没问题啊,但是呢,如果我们这个数据量更大啊,数据库和表呢更多啊,这种场景呢,如果我们使用二进制的日志进行恢复呢,那其实是一个真的是一个细活了啊,得一点点的去盯着看是吧?这个还是有很大的这个挑战的啊,这个要注意啊,那怎么办呢?诶我们还是很担心这个数据呢,被一不小心的给删掉了,我们有这种备份的场景怎么办呀?诶这个我们还可以考虑呢,诶使用我们下一章提到叫主从啊复制的这种方式啊,配置这个主机从机。啊,甚至我们叫一主多从啊这样的一种架构,然后呢,我们通过这个二进制的日志文件的方式啊,这个就不让咱们自己去读了,咱们直接呢,就让这个从今呢哎去读这个二进制的日志文件,然后呢,它生成这个中级日志,然后呢,诶利用这个终极日志,它在它的从数据库上呢,做这个数据的一个同步,相当于呢,我们这是一个master啊一个主机,我们假设有多台重机,主机上这个数据呢,诶修改完以后呢,是不是通过这个blog文件呢,他们也都同步的做了一个更新是吧,相当呢大家都诶保存了我们这样一个完整的数据啊,当然呢,后续还有这个分股分表的这样的问题啊,啊至少我们是有能力呢保存这个完整的一个数据的啊OK,行,那这儿呢,我们关于这个二进日日的一个基本使用啊,咱们就先说到这儿啊,下边呢,我们再说一些更高大上的问题啊。
05:45
好,同学们,咱们接着呢再来谈一谈这个二进制日志啊前面的话呢,我们已经关于二进日志啊,它主要是来做什么的,然后呢,如何呢去查看啊两种方式是吧?呃,如何呢,使用这个日志呢,我们进行数据这个恢复,包括如何去删除二级日志,诶咱们呢都给大家做这个讲解,最后呢,咱们还抛出了就是我们呢使用场景呢,还有这个叫主从复制的这种场景,这个呢,咱们放到下一章中呢,去做整个这块呢,其实我们都相当于呢,是具体在开发中的一些应用场景,对吧?诶我们呢,有这个实操的这个场景,那么接下来的话呢,我们来谈一谈稍微这个高大上的问题啊,那就是偏底层的这个呃,机制问题了啊,那这儿呢,就类似于我们前面呢,讲锐度日志和安度日志的时候呢,这样的一些场景,我们翻一翻它的一个底层。
06:28
啊OK,那这里呢,我们就提到了,就是blog它的一个写入机制的问题啊,包括呢,Blog和我们这个relog呢,他们对比完以后呢,提到了一个叫两阶段提交的一个问题啊,这块的话呢,大家在实际呢,面试当中去交流呢,都可以去谈到的啊。好,那么这块我在整理这个课件的过程当中啊,这个网上呢,翻到了一个帖子啊,然后呢,他画了一些这个具体的这些图啊,我觉得整的还是非常好的,那我这呢,就把这些图呢,就借鉴过来了啊,遗憾的是呢,这个拿过来以后呢,这个诶网址呢,我就没有及时的去记录了啊,所以比较可惜啊,要不呢,把这个地址也粘给大家啊行,这呢是这些图啊,当然了,在这个咱们学的过程当中呢,其实大家看到这些图的话,这块我也都呃基本上都是这个现画的啊,所以你会看到呢,咱们讲这个麦高级这块呢,这些图啊,往下拽一拽。
07:15
啊,大家你想一想,光画这些图觉得得需要花多长时间呢?啊,大家觉得需要花多长时间。这个是不是应该得,哎,多少来一波666吧,是吧,哎,你看啊,所以有同学总抱怨说,老师你这个视频讲的太长了,我听起来挺费劲的,呃,大家你也可以同步的去同理心去想一想,你看我录这条视频我会花多长时间?对吧,所以呢,虽然说这个社会随着咱们讲这个抖音,大家每天刷抖音特别爽啊,所以呢,就希望呢,学视频的话,学技术的话也需要呢,短片快一些啊,最好你告诉我就看我就会,会了我就可以去用,我就可以面试着去聊,我就可以掌心啊,其实大家呢,对针对于学习这个事儿的话呢,还是不能去偷懒的,真的要塌下心来一点点的去积累啊,你可以让自己步伐快一点,但是你不要想着这个投机取巧。
08:01
啊,这里边儿的这些图,你想想画这一个图的话呢,是不是就需要花一些时间,OK啊,当然了,这些图呢,不一定说非得都是我这个亲自原创的啊,那这样的话呢,我估计几年时间我也做不完啊,这里边儿呢,有有一些这种图的话呢。在网上呢,也有前任很多人呢去积累了,然后这里边我们把它呢再丰富一下啊,在有的可能不准确的,我们再把它精准一下啊,随着麦五版本的这个更新呢,我们再去给他,呃进一步啊去做一些优化是吧,牛顿都说了是在站在前人的这个肩膀上的,那我这儿呢,肯定不是我原创,这毫无疑问了是吧?诶当然呢,是我们里边不是说所有都是原创的哈,这个会有很多呢,是在原有的基础上我们做一些更新,哎保证呢,大家呢,拿到这个知识一定是最新的,是系统的,是正确的。啊,这个我觉得是更重要一些啊行,那回过来咱们呢,接着呢去来看一看,咱们现在要谈的这样一个问题啊,叫做写入机制。好,那么前面的话呢,我们讲到这个讲到过这个redolo啊,Redolo呢,我们提到的就是随着我们这个事物的推进啊,比如我们这一个事物当中呢,有很多行具体的这个操作了啊,假设呢,我们啊,咱们说夸张一点啊,我就要插入10万条数据,那这个事务的话呢,肯定是要执行一段时间的,在他这个执行过程当中,我们说呢,这个redolo呢,是不是就开始做这个记录了,对吧?诶开始做这个记录了,那redolo呢,我们当初讲的时候呢,其实也分成了两个阶段,一个呢,是把这个数据呢写入内,写入内存中呢,叫redolo buffer中还记得是吧?然后呢,诶在这就涉及到你这个刷新的这个策略了啊,然后呢,我们会涉及到呢,把buffer中的这个数据呢,是不是诶刷新到我们磁盘中的这个file里边啊,我们还有相关的那个参数,咱们也重点讲解了012是吧,三个参数什么时候呢,去做这样一个刷盘的操作,OK啊,这个呢,大家如果忘了话呢,回去再翻一翻啊,这个内容还是比较重要的啊,然后现在的话呢,我们来谈谈这个blo,类似于同样的这个问题。
09:51
那一般呢,我们说呢,这个blog呢,呃,说什么时候去写入啊,诶咱们同时呢,平时呢,一说这个blog,其实主要指的就是blog这个file,也就是我们实际磁盘中存在的那个文件,对吧?诶说的都是它啊,那一般呢,咱们都会提呢,说当事物提交的时候呢,我们会诶把这个数据呢,诶保存在这个blog日志文件中,是磁盘中的这个文件,那么如果我们讲这个细节的话呢,其实也会涉及到一个内存中的一个缓存,叫blog catch。
10:18
啊槟榔catch这个呢,就是针对我们每一个事物来讲的啊,每个事物对应的这个线程来说,当我们这个事物开始的时候,啊,执行的过程当中,它其实呢,就会把这个数据呢,缓存到我们这个,当然我们这里主要指的是增删改或者DDL这种更改性质的语句,是吧,写入到我们这个B开始当中。啊写入到这里边好,然后的话呢,呃,以一定的时机的方式呢,他呃在提交的时候啊,这个有可能是提交的时候,因为这就涉及到我们具体的这种方案了,是吧?诶那么它就会呢,把这个数据从过程上来讲的话呢,它会先写入到我们叫文件系统的这个缓存里边啊叫配置cash,我们讲这个relo不也是这样嘛,对吧?然后的话呢,诶再呢,以一定的这个啊这个这个时机啊,他去呢,同步到我们这个磁盘上,磁盘上对应的这个blog这个文件里。
11:05
对吧,原来呢,我们相当于泛泛的这样一说就写进去了,诶其实这个细节的过程呢,是长这个样子的啊,而且呢,我们在前面的讲解的时候呢,也提到过一个事儿什么呀,就是说呢,我们这个归档文件啊,我们这个blog文件呢,假设呢已经快满了,然后呢,我们这个事物呢,假设还是个比较长的一个事物,然后呢,一旦我们这个事物中的这个呃blog这个文件呢,写入到这个呃blog里边呢一点,假如写一点就满了,那剩下这个事物中的其他的这个语句还要不要往这写呢?诶我们说呢,是不是一定要写进来啊,就即使呢,你会超出这个blog它的这个设置的大小。因为呢,我们要保证这个blog里边呢,记录的这个事物呢,都得是完整的啊,这一点大家要注意一下啊,那你这个填完以后的话,真的是满了,然后呢,你要是其他的这个再往里写,写不了了,这个你再去新建一个blog文件啊,这个清楚啊。好,这是我们说的这样一个事儿啊,那么在这个过程当中呢,我们可以呢,去做这个控制啊,这个控制的话呢,就使用的叫啊S的blog啊,比我们那个relo那个要短一些,那个特别长的那个参数是吧,这个默认的值呢是零,零是什么意思呢?就是每当我们这个事物在提交的时候呢,把这个catch当中的这个数据呢,就写入到我们这个,呃,文件系统里了,这儿呢,是我们的操作系统层面的,对吧?诶操作系统层面呢,叫文件系统的缓存。
12:18
然后呢,由这个操作系统呢,去决定什么时候呢,刷新到我们这个磁盘中的这个文件里。啊,由这个操作系统呢去决定好,那既然呢是由操作系统去决定,我们说此时呢,就会有一定的风险,什么风险啊,就是说呢,如果呢,我们啊,其实这块看大家注意的这个环节啊,呃,如果说我们这块呢,就是写到这儿以后呢,呃,还没有提交事务,这是我们买circleq服务器挂了啊这时候挂了我们用担心嘛,诶是不是不用担心对吧?呃因为什么呀,因为这时候呢,你既然都挂掉了,诶我们事务也没有提交,所以你这个内存中的这个catch中的数据呢,呃,丢失了,丢失就丢失了,反正事务也没提交嘛。对吧,哎,像咱们当初讲这个redolog呢,当时也是这样个情况。但这里边会涉及到他们俩的一个,呃,到底他们主要的作用是什么,呃这块呢,会有两阶段提交呢,一会儿我们去支撑讲这个事儿啊好,咱们先单独的去说这个blog。
13:09
呃,这个呢,是我们在这个事物提交之前,那你如果说这个事物提交了啊,只要你提交的话呢,我们就能够保证呢,你内存中的这个blog记录的这个,呃,更改语句呢,我们就会放到这个文件缓存当中,所以这个时候的话呢,服务器MYSQL服务器如果挂了,这个时候不用担心,因为我们已经提交到这儿了,对吧?诶这就不用担心了,好那么如果说我们这个操作系统要是挂了呢?诶这个时候要挂的话呢,是有问题的。啊,因为此时你要挂的话呢,由于我们没有是不是更新到我们这个,呃,磁盘文件当中啊,如果呢,你要是相当于这块呢,提交的这些事物对应的这个更改语句,我们就没有记录下来,如果呢,你需要做这个系统恢复啊是吧?诶那这时候呢,这部分数据呢,注意是会丢失的。哎,对吧,哎,它是会丢失的啊,文件不全嘛,行,这是我们要注意的点,行,那么基于这个点的话呢,我们可能就想说你要是及时的能够刷盘就好了,是吧?诶那这时候怎么办呢?我们就可以呢,去更改这个参数啊,我们把这个参数呢,可以设置成是这个一。
14:04
那设置成一以后呢,我们就能够保证每次提交事务的时候呢,都会去执行我们这样的一个刷盘的操作了啊这个呢,其实就有点像我们当初设置那个relog一样啊,Relog的默认情况其实也是这样子的是吧,这样的话呢,确实比较安全,但是呢,呃,这个相对于性能来讲呢,是不是要差一些,呃,因为交互的次数呢,会比较频繁啊,那有没有一个居中的策略呢?啊,我们log呢,当初是不是也谈过那个参数二的问题是吧,然后呢,这里边儿这个策略的话呢,就是我们可以设置一个数呢,叫N。啊,设这个数呢叫NN呢是大于一的啊,那它呢意味着是什么呢?就是我们每次提交事务的时候呢,都执行right,但是呢,你攒N个事物以后,我们才进行这样一个刷盘操作。啊,那你N21的时候呢,其实就相当于每提交一个15就刷盘一次,哎,那大于N大于一了,那我们就可以攒一攒,这样呢,就减少了这个IO的这个次数,所以呢,如果说有IO这个瓶颈的时候呢,我们可以呢,把这个参数呢,改的稍微的大一点,但是这个参数的话,你注意这个越大的话呢,其实风险呢,是不是就越高啊啊因为你比如说咱们夸张一点啊,比如我写的是这个1000,那就呃1000个攒1000个事物呢,我们才去刷盘一次,那你想想诶,这1000个事物呢,现在都提交了,都放在这儿了,如果操作系统要一档机挂了,这1000个事物呢,就没有相当于他对这个文件系统,他对整个我们数据库做的更新操作,我们就没有记录下来。
15:21
啊,这也是感觉风险很大的一个事儿是吧,哎,这个注意一下啊。好,那么关于它这样的一个写入过程呢,我们就告一段落,下面的话呢,我们来提一提这个blog和这个redolog的一个对比啊,这个经常呢,有人会看到他俩的一个对比哈,呃,那么我们呢,直观上来讲的话呢,说relog呢,它是叫物理日志啊,咱们讲relog自始至终就强调的是这个点啊,那么这个安度log也好,这个blog也好,他们都属于叫逻辑日志。啊,它是属于呢,像记录一下给ID是哪个的值增加多少减多少啊改成多少,这个呢,就有点像我们写的具体的语句一样,是吧?而我们这个lo呢,它是真实的记录的物理磁盘上的哪个数据页的啊,哪个偏移量的哪个位置,哪个字节做一个修改啊,属于物理层面的啊这个大家注意一下。
16:05
好,然后呢,它俩的主要功能呢,你注意是不同的哈,我们这个b logg的话呢,一提到它主要是用于恢复数据的,还有我们这个实现主从复制的啊,在集群当中保证数据一致性的啊,主从啊,通过blog啊,数据复制,数据同步啊,是这样的一个功能,而我们这个redo log呢,就是为了保证我们诶事物提交的时候呢,它具有这种持久性。啊,就相当于我们一旦这个数呢,提交了这个数据呢,我们要能够给他持久的保存起来啊,拥有了这个崩溃恢复的一个能力持久,诶这个大家注意他们侧重点还是有一些不同的啊。好,那么当这两种日志呢,它归结在一起,在我们实际的执行事务的过程当中,诶,它是一个什么样的状况呢?来我们这块来看一下。那这里边我们提到了一提到了一个概念,叫做两阶段提交啊,我们在一个事务当中,假设呢,做一个更新的操作啊更新的操作,那么这个更新操作的话呢,它肯定呢,会考虑进入到我们的redolog当中,也会是不是体现在我们blog当中,对吧?诶这个大家都注意一下好,那redolog的话呢,我们说在事物执行过程当中,可以不断的去引入啊,并道呢,一般咱们提呢,都说是呃,提交的时候呢,才写入啊这样个过程,所以呢,他们的时机不一样,那时际不一样的话呢,我们可能啊,就会出现这样的一些问题点啊问题点。
17:19
其实这块呢,细节来讲的话呢,他们其实都会有这个缓存的过程是吧?诶那这个缓存过程的话呢,他们就有可能不一致嘛,那说白了,只要你这块呢,力度不是小到说原子性的这种啊,说就写入它这个写入它,那这时候呢,他们在交互过程当中都有可能导致这个呃数据呢就会出现问题,那下边呢,就相当于演示一个场景啊,比如说呢,我们针对于T这个表,然后呢,把其中这个ID是二的啊ID是二的,呃,这个这条数据呢,这个C这个字段呢,原来这个值是零,我们把它呢改成是一。哎,就以这个操作为例,好,那我们在执行这个操作的时候呢,呃,我们就需要涉及到呢,就要把对应的这个操作行为呢,记录到relo里边,哎,同时我们这个blog呢,是不是也会啊做一个记录是吧?那这个记录的时候呢,假设我们这个数据呢,就记录到relo里边,但是呢,没有及时的呢,诶我们相当于是同步到我们blog这个文件中。
18:09
啊,没有同步到这儿,没有同步到这儿的时候呢,如果我们数据库服务器呢,出现异常了啊出现异常的时候呢,我们该如何去办呢?啊这个时候呢,我们看针对于我们这台主机来讲。就我们出现异常这台主机来讲,我们把它呢,已经写入到这个redolog里边了啊,那既然你入到这儿了,那我们这时候这个事物的话,相当于就是已经持久化了。啊,咱们相当也可提交这个事物了啊,提交事物了,那这时候往这写了,没写成,但是这里边已经保存了,那我们这时候呢,针对这台主机我们要做恢复的话呢,已经能够保证它的这个持久性,相当于呢,我们已经做了更改了,所以这个C的值呢,就是一啊,是更新以后的值,而我们的这个背脊或者叫从级啊,主从复制它呢,参照的是这个blog文件。而这个blog文件呢,它在这个同步的时候呢,由于呢,没有把这个C啊改成是一写入到这里边,所以导致了这个从积呢,诶它去在读取,读取出来这个数据的时候呢,他们还是零。
19:03
啊,那这时候就导致我们这个主从或者叫主备呢,这个数据呢就不一致了是吧?那怎么解决这个问题呢,我们要保证他俩呢得是一致的啊那这时候怎么办呢?诶其实呢,非常简单的一个策略,咱们呢就在这个呃写入blog这个前和后啊诶分别加了一个叫redolog的一个写入,当然呢,Relog我们就写入一次,那怎么办呢?相当于我们就把这个re多的写入行为呢,分成了两个阶段,哎这个呢就称为呢叫两阶段提交。好,那么log呢,在写入blog之前的这个阶段呢,我们叫做诶PREPARE2个阶段,准备阶段,然后写入blog之后呢,下边这阶段我们称为它叫commit这个阶段。啊把他俩把它呢给加一下是吧?啊就是这样个思好,那那实实操的时候呢,就是我们先呢,诶有一个prepare的阶段的一个记录,然后的话呢,诶我们blog这块呢,也去做一个,就是这块呢,其实已经是做了一个啊记录了啊然后呢,这个blog这块呢,我们也记录,然后呢,这个blog记录完成以后呢,我们这个呢在执行个提交,哎就是整个这样的一个过程是吧,整个这样一过程,说诶这个我们就直接看这个图吧,说如果呢,我们现在MYS控的服务器的这个宕机了,诶宕机以后我们重启了,重启以后的话呢,我们要判断一下啊,首先呢,我们看下这个prepare的过程有没有执行过啊,假设呢,咱们是在写入这个时候呢,出现的故障是吧,就像我们上边的问题一样,那首先呢,我们在经过这个prepare阶段时候,发现已经是执行了,哎已经写入了是吧,但是在呢,判断这个写入blog的时候呢,诶它这块呢,是一个no。
20:31
那既然是个no,那就相当于这块写入不成功,来保证我们的备机和从机的数据呢,得跟主机一致,怎么办呢?我们把这个主机上的这个呃,已经呢执行的这个呃,锐度这个呢,我们再做回滚,现在于又回到这个C呢等于零的这样个场景。这个注意一下啊,哎,等于那个的场景,那如果说我们这个B道给它写进去了啊,这个不是个茶,是个对勾啊,写进去了那就相当于是个yes,那这时候我们就提交事务。啊,就提交15啊,就这样个情况啊,说直白一点的话呢,就是相当于我们这时候呢,已经是啊,比如我们以上边例子来讲啊,已经把这个主主机当中这个C呢改写成11了,但是呢,我们接下来相当于多了一个判断的环节啊,判断一下我们这个更新的这个事物的行为是不是写入blog了,如果写入了。
21:15
啊,如果写入了,那就往下去推进,那这是C1,然后那个重击的话呢,也都按照我们这个去更新是吧,都是这个C是一了,但如果你要没写入的话呢,诶,那么人家都还是零的情况下呢,你主机的这个C等于一呢,你也回滚一下,你也改成零,哎就是这样的一个操作。啊,其实这个呢,我就已经说清楚了啊,诶这块呢已经描述过了,行,那么大家呢,把这个过程呢去体会理解一下,这个呢,就是相当于我们这个二级日志呢,稍微偏底层的一些内容啊,整体来讲呢,这个难度不大啊,大家呢去理解一下就可以了。
我来说两句