00:01
好,呃,那我们知道这个工作原理以后呢,呃,接下来我们需要给大家再去介绍一下,这个就是买搜狗它这个blog的一个记录方式。啊,记录的方式也好,或者说那个什么blog的这个级别也好。理解吧,啊,这个什么是blog啊,我觉得这个东西没必要再给你去解释了吧,就是一个二进制的一个文件对吧,二进制的这个文件就是这个主机呢,专门什么用来去记录这个写操作的一个文件,你把这个了解到了就行了,好吧啊,别的东西我就先不说啊。好,那我们重点来说这个log的一个这个分类设置啊,呃,它总共有这个三种方式啊,一种叫这个statement,一种叫a row,一种叫mixed。啊,我不知道大家这个对这个还有没有印象哈。呃,反正你们肯定是讲过的,你们在离线数当中,既然你们用过这个Maxwell,那么你你们就一定要去讲MYSQL的主从,那你要讲MYS的主从复制,你就一定会涉及到blog,你涉及到blog,你就一定得讲blog的一个什么格式。
01:00
对吧,就是我不知道你们还有没有印象,好吧,那这个东西很重要,我必须得再跟你说一次啊,OK,它总共有三种,一种是这个statement,一种是mixed,一种是肉,好,那我们就分别来说啊,这个statement它是一个语句级的。啊,语句级的这个肉呢,它是一个行级的,然后这个mix它是一个就是我们叫这个STEM一个升级版啊,其实的话,你也可以理解为是它们两个的一个什么组合版。对吧,混合的或者什么组合的一个版本啊组合版。好呃,但是你光知道这个也不行啊,你得知道这个每一种级别,它的这个记录方式是什么样子的,对吧?来这个我们给大家去做一个分析啊,这个文字我就不说了啊,我们自己来去做分析。好,我放到这啊,这是blog blog的这个格式啊,好,我们有三种,一种是statement啊,一种是这个叫做肉啊,还有一个是叫mixed。
02:00
对吧,来,那我们就分别来说啊,这没写错吧,Mix没写错啊,来分别来说,我们先说这个第一种叫这个statement啊,我把它拿过来。好,第一种是我们的这个statement OK,然后呢,一会儿呢,我再来去说这个。呃,叫这个肉的方式啊,好,然后呢,再来去说这个。啊。呃,我想想啊,呃,这个不在这里面画了吧,这里反正我们也不也不用画图啊,我写到这里面好像,呃,你们看起来也不是很方便啊,我写到这个笔记里面吧,对吧,反正我们之前不是有个笔记吗。对吧,写到这里面比较好啊,来我写到这吧,反正我也不也不用画图哈,呃,这是第三个第四个吧啊。写到这里面啊,写到这里面啊,来这个级别啊呃,叫格式吧啊呃,总共有三种啊,再来写一下statement,还有一个是这个肉,还有一个是这个mixed。
03:04
对吧,总共有这个三种啊好,呃,那我们先来说这个就是statement啊OK,再来说这个肉,好,再来说这个mixed酱。呃,那我们就直接说了啊,首先这个statement,我们把它翻译成是这个语句集,这个啥叫语句集呢?就是它记录的方式,他记什么呀,就这个大哥啊,他说我要去记录一下我这个今天我这个发生的事儿。那他记录什么呢?它记录的是这个事情本身,你能听得吧,他记录是发生了什么事,记录事情本身,他不记录那个,这个事情对他导致的结果是什么,他不记录这个东西。明白吧啊,他不记录这个结果啊,他他只记录这个事儿,所以说呢,从这个MYSQ的角度来讲,他是语句集的,那么他只记录什么,只记录只记录什么呀,写操作的so后语句,就比如说我对他做了一个写操作,那你这个写操作你是做了一个删除,做了一个修改,还是做了一个新增。
04:13
对吧,他只会把这个操作语句给你记录下来,比如说我们现在做了一个这个操作叫做update对吧?啊,比如说update某某表啊某某表,然后呢,我们set一个某某字段啊,比如说set name吧,等于等于什么,等于张三啊VR什么呀,V这个ID等于1001。能理解啊,那如果说你做了这个操作行,那我就什么只把这个语句给它记录下来了。至于。我最终的结果是把你的这个1001这个这个数据是什么name改成张三了,这个结果呢,他是不记录的。对吧,你只能什么通过这个soql语句才能够什么知道我最终的结果是什么样子的。理解吧,它是记录什么,记录语句的?好,那么这个stand有什么好处呢?啊,它的好处是在这方面去体现的,如果说你光从这条语句上来讲的话,体现不出来好处,它从这个角度去体现的,比如说update,某某某,Set什么呀,比如说site name等于啊,比如说就叫张三吧VR什么呀,ID大于某个值,比如大于1001,对吧,我随便举例子啊。
05:18
那么大家来想哈,这种语句的话呢,因为它的条件是不确定的一个条件,就是它不是说这个呃等于啊什么的,它只能为什么定位到一条数据,而你是一个大于,那大于的话,我我可能会定位到什么N多条数据。对吧,那就相当于我的这条语句,可能会导致你这个N条数据的一个改动。能明白吧,那如果你要记录结果的话,那你可能要什么记录很多个结果,比如说诶,张三改成了什么,这个名字改成了张三,什么名字改成张三,什么名字改成张三,你要记录很多啰里巴嗦的。他说不用啊,我就把这个发生的这个事记录下就行了。能明白了吧,他就把这个搜狗记录下来,所以说呢,你不管是对多少条数据的一个更改,我只需要有一条骚狗语句我就可以了。
06:01
那么将来呢,你这个重绩啊,他不是要抄抄我这个日记吗?那你把这个日记给他抄过去以后,对吧,你重绩抄过去以后,你是不是也需要把这个搜狗给他执行一下,是不是也就能够对应的跟我这个重机里面,跟我这个主机里面数据保持一致了呀。能理解吧,啊,它的好处是在这个地方的,但是呢,它有坏处,它有什么坏处呢,这种坏处。看好了啊,我写一下so后L语句,比如说update,某某某,Site name等于我后面呢写一个随机函数,或者说呢,写一个时间函数,或者呢写一个什么自定义函数,叫什么udf对吧?VID等于或者什么ID什么大于或者等于都可以啊,大于1001或者等于101都OK。如果说我做的是这个操作,那么它就会有问题了。因为它还是只记录你的这个事情本身啊,它只记录这条SQL语句,好那么大家想我的这条SQL语句在我的主机里面执行的时候,因为我用了一个随机函数,或者用了一个什么时间函数,或者用了一个什么这个自定义的什么udf。
07:11
对吧,那你想想啊,这个随机函数,假如说我在我的主机里面,我随机出来是个A。对吧,那我将来我这个重击我抄走以后呢,诶他说诶这个大哥执行一条soql语句,那我也执行吧,那你重击里面,你再去执行这条soql语句的时候,你敢保证他随机出来的还是A吗。对吧,或者这个时间层面,人家执行的时候是八点钟,你敢保证我重击再去执行的时候,他还是八点钟吗?你超日记你不得超个几秒钟啊,大家用不了几秒钟啊,毫秒肯定得有吧,你抄日记你得抄,那你重做这个事儿你就得花时间,你敢保证你的这个时间能跟大哥保持一致吗?对吧,或者说你用这个自定义的函数,那你自定义的函数,你在不同的场景里面,你的函数的结果你敢保证是一样的吗。所以说这种情况下,我们就会导致一个问题,就是你的组重的数据可能会导致不一致了。
08:05
明白了吧?因此,如果你要使用这个statement,那你就一定得保证你的。操作中不能带这种操作,如果有这种操作,那对不起,你就不能使用这个statement。你就得使用什么呀,你就得使用肉了。对吧,所以接下来我们来说这个肉啊,呃,肉是什么呀?肉叫做这个行情,行情它记录什么呀?它记录记录的是每行数据的变化,记录的是每行数据的变化,能理解吧,你比如说啊,我们还是执行了一条思考语句。我还是执行了这条SQL语句,你能听懂,它不会记录这个东西的啊,它记录什么呀,这条SQL语句会导致他记录,记录什么呀,就是你假如说你原来的名字叫李四啊,会导致什么记录什么呀,就是李四,然后呢,我改成了什么呀,记录什么记录这个李四变成了张三啊,李四好改成了张三。
09:08
能理解吧,我会记录一下我的这条数据,它的名字由原来的李四,然后呢,变成了张三了,我记录是这个东西,我不记录你的这个语句,你能明白,好,那如果是这种情况下的话,大家想想哈,我再次执去执行这个so考语句,比如说我们改成等号吧,等号我好说一点啊,我再来去执行这条骚OL语句的时候。你这个地方,你甭管生成的是一个什么随机数,是A也好,或者什么时间也好,或者utf也好,那我一定是有一个最终的值的吧,同学们。对吧,它一定有一个最终的值,那么它就会记住什么呀。来他会记录什么呀,他会记录这个东西,就是我会记录什么呀,记录好记录什么,记录你的这个名字啊,就是内蒙,呃,记录什么,记录还是李四吧,好吧,还是李四,就是假设你的原来的名字叫李四啊,李四改成了对吧,改成了什么?改成了你的随机数就是这个的值。
10:10
明白吧,你在我的主机里面执行这个也好,或者执行这个也好,或者执行这个也好,那你肯定会有一个具体的值,那我是把这个具体的值给它记录下来的。那我把这个具体的值记录下来以后,你想想啊,将来我的重击抄的时候,我抄什么呀?我是抄你的语句吗?我不抄你的语句,因为你就根本没有记住这个语句,你记录的是我原来是什么值,现在我改成了什么值。那我重新超过以后,是不是也是原来什么值,我现在改成了什么值?那你还需要担心我的重击?不能跟主机保持数据一致的这个问题吗?就不可能存在了,因为我的重机根本不会再去执行这个函数的。我拿的就是你主机中这个函数所生成的那个值。所以说我的行籍我是可以解决这个问题的。明白吧?好,但是呢,行情呢,也有行情的不好,比如说我们执行的是这条语句,你就想想吧,这条语句呢,可能会导致什么,可能会导致你的N条数据发生了修改。
11:09
对吧?那如果说你是通过我的statement来去记录的话,你甭管有多少条数据发生修改,我只需要记录这么一条语句就可以了,但是对于我的肉来讲的话,那就不行了。假如说你对100条数据造成了修改,那么它就会记录100个,比如说某一条,第一条数据由什么什么值改成了张三,对吧?第二条数据由什么什么值改成了张三,第三条数据由什么什么值改成了张三等等等等,依次记录100个,因为我要记录的是你每条数据,每条数据一个什么更改,改后的结果。理解吧,所以说呢,这种操作对于这个肉来讲的话呢,它就会变得很啰嗦。OK吧,但是人家是能能够记录成功的,是能够成功去操作的,但是呢,会变得很啰嗦。就没有statement呢,更好一点理解吧,好,行,那我们既然知道了两种情况,就是各有各的好,也什么也各有各的不好,接下来我们就想着说,那我能不能扬长避短对不对?所以说我们就来了一个什么mixed,这个mixed啊,我们翻译是翻译成什么呀,Statement的什么这个升级版,啥叫升级版呢?就是啊,就是。
12:19
正常情况下好,正常情况下都是什么呀,都是这个statement好只有什么呀,这个这个so口中啊搜狗的,比如说这个使用了什么呀,使用了这个函数啊,使用了什么这个时间函数什么什么随机啊,或者什么这个时间呢。啊,或者什么这个自定义。函数等。对吧。食啊,会变成肉,会变成肉。明白我的意思吧,就正常情况下我都是什么呀,都是这个statement,当你这个出现了,比如说哎,我使用什么随机函数了,时间函数了,或者什么自定义函数了等等一些的时候,就是我把不准你这个值到底能不能保持一致的情况下,好这个时候我就把它变成肉了。
13:14
就是它什么更加的会智能一些,就它会什么自动去决定好,那么当然啊,你什么情况下会变成肉,这个需要我们自己去管吗?不需要你自己去管,它会自动去判定你的Soo语句需不需要把它变成肉,如果需要它会自动去改。理解吧,所以说我们正常从买搜狗的这个主动角度来讲,我们应该用哪个级别呢?我们应该用这个级别会比较合适。能不能听明白,但是我们在大数据的场景里面,大家觉得用哪个会合适一点。啊,同学们,大数据场景里面,你觉得用哪个会合适?肉还是mixed?啊,在半天呀。
14:02
啊,就我说到这了,居然还有同学选择这个statement是吧?来说一下啊,我们大数据场景里面可能用的是肉。因为啥呢?你再看这哥们儿啊,你再来看这哥们儿。对吧,你再来看这哥们儿啊。如果说啊,我们现在呢,还是使用什么,还是使用这个STEM的情况下好,那我的主服务器啊,我的主机,我进入的是一条语句。对吧,然后这哥们说了,哎,我是你小弟哈,我要去读你的日志了,行,他把这个搜口语句读过来了,那你搜口语句读过来以后呢,你把这玩意发给卡不卡了,卡不卡说。你在跟我开玩笑吗?你把SQL语句发给我,我有这玩意,我要这玩意干啥用啊,你说。啊。你说我要这个东西干嘛用?我有搜考环境吗?我能给你执行这个so考吗?我能通过这个搜狗得到你的结果吗?
15:00
不可能。对吧。你不像那个真正的重击啊,它是有soql环境的,我再执行一下这个SQL那就可以了。但是我们大数据场景,我是我监控到你的变化以后呢,我要把变化呢,发给我的卡不卡,或者什么发给什么其他的流处理平台,他们是没有搜索环境的。就算有收购环境,你敢保证他们就有数据吗?对吧。不靠谱。说说什么应该用什么应该用肉,就你必须得什么呀,把你的所有的这个改动都记录成什么,一行一行的改动,对吧,最后呢,我把这个抄走以后呢,我发给卡不卡,我一看哦,什么数据改成了什么,什么数据改成了什么,什么数据改成了什么,这才是我想要用的东西啊。对吧,我要的是你的结果,我不要你的过程。能明白吧,我要的是结果,我不要你的过程。听懂了吧,同学们啊,说这个东西啊,在大数据场景里面,我们肯定选择什么呀,肯定选择的是肉这个级别的理解了吧,啊,那我就把这个给大家去,呃,再来解释一下,花点时间啊,那这个我就不要了啊,把它删掉,其实正常情况下呀,这些东西呢,都不应该再花时间给你去讲了啊,你们之前都学过的。
16:15
好吧,嗯,但是我觉得我怕你们这个。呃,记不住啊,然后呢,就又说了一下啊,行吧,所以说我们这个最后呢,我们要选择肉是比较这个合适的啊同学们OK啊,停一下。
我来说两句