00:00
好,然后这个地方预分区,那预分区里是什么意思呢?之前我们是提过一个reading过大会被切分啊,但是我们一直没讲它的一个切分策略,对吧,因为那个东西也相对来说不是那么重要,那我可以带大家看一下,因为我们公司当中就是你去公司应用的时候,他一定是做预分区的。那预分区跟自动切分有什么区别呢?那我们可以看一下。叫你你们自己有看吗的切分。课上没讲的时候自己也不看一看是吧。其实这个东西相对来说没有那么重要啊,所以说没有专门的去讲文档,然后也没放。直接了解一下的,随便找一个博客看一下,他分也分老版本和新版本,新版本它是自动切分的来,它在最高的一个版本是通过这种方式。
01:00
这种方式那指的是什么意思呢?这个属性我们可以看一下。这是最大的一个值,就是说到最大,最大。它会被切分成两个,这是最大的,但是它不是说第一次到达这么大的时候才切,它有一个过程,它这样它要做一个计算。这个就是它的一个计算。计算R这个平方,那R是当前这个table在同一个reading so上,就是说这个reading so不对,102103104吗?你这个表在这个节点上它的一个约定的个数,然后把那个平方乘以这个值,这个值是这个128兆,这个看过了。这是什么?Region memory flash size128兆啊,这个大家看过,还有一个,这个是十个G,它是取当小的值。小的值,那想想啊,第一次就是说你刚创建一张表,肯定是没有数据的,对吧,它不断的增大,增大,那当时这个R是几啊。
02:03
一对不对啊,你还没切的时候是不是一呀,对吧?哎,它是一,那它按什么时候切呢?它这样一乘以这个128兆。然后。这个是十个G,它取小的,也就第一次是128兆,切一个。好128兆,切一个呢之后它就变成了什么样的。不是这个是切过后一八兆,他是这样。128兆,好,128兆,它就切一次了吧,切成了两个,那你往后追加数据,想想是不是往这个往这个V里面追加。这个地方只涉及到什么改的时候才往这才往这有操作吧,那也就是说下一次要切分的时候,是不是对它进行切分。你还会把这个拿出来切分吗?因为切分是不是对于单个的region,你注意一下,达到128兆之后,这个东西就变成了。
03:04
两个对吧,那你先添加数据过来之后,是不是这个东西单独的这个威力在不断的变大呀。对吧,OK,那下一次切分的时候,是不是对单独的这个东西进行切分,那这个还是不是这么大。对吧,还有什么呢?那有什么判法,第二次切分的时候,这个就变了吧。这啊,还是一吗。不是一了吧,那它此时是不是这个值在不断的增大,能感觉到吧,因为它是跟R数平方有关的呀,不断的增大,OK,那这个增大增大它是取最小值,那这个东西增大之后总有一个平方乘以128的会超过十立方。那到最后的时候,它同样的这个切换成两个之后,它是不是对这个进行增加,也就是说最后的小的呢,是128兆大的最大的是十个G,十个G。如果让它自动切分的话,能不能感觉到是这样的一个最后表形成了这样一个内容多和region之间是这样的一个关系。
04:05
想一下,就说他之前的那个东西。不切了对吧,那后来要切的东西是不是对于这个新增进来的这个微进行切分啊。第二次切的时候,两个瑞定应该它的一个大小关系应该是这样的,对不对。对吧,就第一次切分,它应该当时的情况是两个这么大的,第二次切分呢,切分出来两个这么大的。第三个呢,就更大一点了吧,两个这么大的,最后呢,变成十个这一个了。变成十个另一个了。能不能理解,也就是说最小的这个是。然后最大的个G这个地方切成两个,然后这个地方最大的那个是十个G吧,十个G一个,十个G一个,那有同学说十个G会切啊,那我是九个G什么1000兆呢,对吧,它这个还是维护在一个里边吧,还不会切吧,那也就是说这个地方这个位置跟这个位置差距。
05:13
是不是太大了呀,就是说严重的做了一个负载严重不均衡了。啊,是啊,我的意思主要就让他感受一下,就是最小的跟最大的干什么。差距相当大的这个几十兆,或者是就算你100多兆吧,就算它这个往后会增大啊,因为有可能你注意啊,这块为什么会我提的是128呢,大家理解都是64是吧。因为不想让大家晕,看当时128兆是切分出来两个64对吧,两个64,但是你要注意啊,就是这个地方它可能是负无穷到。2000对吧,这个地方是2001,假如说切分的时候到正无穷对吧,它其实可能只存了2000~5000这条数据。
06:04
然后你这边如果说小于零的那个数据,是不是也往往这里边添加呀,它有可能会128兆吧,就比一般的话128小一点,那我说的就是128,因为它不到128兆,他肯定不会做第一次千分吧。哎,任何什么都不会,这能理解吗?啊,核心的你要理解的是让它自动切分呢,它有一个很小,但是切到最后它有一个肯定是十个G了,就越小于十个G,因为到十个G它又会进行切分了,切成两个两个五个G了吧,啊就是说它自动切分的这个规则,你看这个100兆左右,这个十个G。是不是你能感觉到严重的负载不均衡啊?啊,严重负担就很,那在公司当中怎么做呢?预分区,预分区就不让他。自动切分用我们什么,就是你在建那个表的时候,你先预估数据量。预估完之后,你给它把切分成多少个reading,把它想好,这个叫预分区,那我们看一下也是一个例子来它预分区呢,主要手动设定来,我们创建一张表,把这个拿过来。
07:13
在H当中是吧,刚才H重启了BH善走。之前所看见的这个表啊,都是什么样子的。假如说表。他都在一个上面维护着了,因为可以说是它这个数据还不够大,对吧,还不够大,所以说呢,他这个start keep and k啊都没有给。啊,都没有给,OK,那我们来建一个对分区的表,Create stop1啊,就是员工表一,然后in。它列一,这是它一个分区,然后这个地方是它的一个分区线,按照100200300,你想想看这个东西。是它的一个分区线,就是说它会按照这个。
08:00
只要教我们一个瑞定提前。分成很多个片,很多个片,那我四个东西传进去了,大家想一下应该是几个片呢?你想想看,它整个的是负无穷到正无穷啊,对吧,那你想看在里边相当于切四刀吧,但是面试的时候应该做过那个什么切钢管,那问题是吧?OK,那我们看一下返回去。刷新一下,大一看到这一列了吗?其他的都是一吧,这个地方呢。剩5OK来。大可没有,就是负无穷啊,因为比1000小的都在这个里边,然后最大的呢,4000,然后正无穷也没写对吧,就比4000大的都在这。就在这,那你这个地方是不是提前,你看当年一条数据都没有,他就给我们做了切片了。
09:01
就不用他以前的那种方式来切吧,哎,他那个切的话,会不会产生那个数据倾斜啊,哎,产生数据倾斜,所以那个对于我们来说稍微了解一下就就行了,就知道他按照默认的那种切入分方式呢,到切到最后的时候会产生数据信息,会产生数据信息,你知道这个点就行了,面试过程当中啊,他肯定也是让你建表啊,也是预分区的表,然后在公司当中应用的肯定也是预分区的,提前就把这个分区给建好。但是你建有同学可能会问,那我一个表到底要建多少个区呢?那这块你要预估数据量。懂什么意思吗?就是一个里边啊,你得想好要放多少数据,你也不能让他达到那个前面那一个。不是你不能说,哎,假如说我接好了这个预分区,对吧,到最后实际应用的过程当中呢,这个分区里边一条数据都没有,然后所有的数据都到这来了,那也不合理吧,啊,你要根据你的数据以及数据量,还有啊,根据rookie来啊,根据rie来,那我们在讲那个rookie设计的时候啊,Rookie设计肯定跟那个预分区是有关系的,你首先理解一下预分区什么意思,就不让它自动进行切分了嘛,提前你在进表的时候就把这个分区啊给规划好了,给划好了,OK,他这个刚才我们用的这种方式是什么,直接指定了这个什么。
10:18
分区了吧,对吧,OK,他还有通过这种方式,16进制的一个序列化来创建。就是它这个地方指定了什么。15个啊,分15个区,然后呢,它是分区的规则,用16进制的一个序列化来,我们看一下它分出来是什么样子的。30号像这个主要还是为了延示分区件公司当中都用的比较少啊,分区键到时候是自己设计的,分区键也是自己设计的,给来看一下。退回去刷新一下进来。16进制的键看见了吗?11122,一直到一。
11:02
就是一到15嘛,对吧,啊,就是这个东西,这个应该是14是吧,因为我们写的是15个区是吧,15个区。输过去是这样的啊,这种方式也可以的,还有我们也通过。创建一个文件,然后在这个创建表的时候,指定按什么文件来切分。他会读这个文件里面的一个配置,来,我把这个拿一下。然后我们要给他讲一个什么东西呢,先拿一下吧。CD到OBD model,然后。然后在这VI一个P点啊,分区键的一个文件夹,那来插入,然后我们做一个什么事呢?我把这个滴滴滴滴啊。放到这个位置,嗯。放到这个位置看见吧,现在它里面的一个顺序是aaad DD,然后BBBCCCCCC了,是这样一个顺序,那我们主要观察一下它分区键,给我们最终分区分出来的东西,大家猜一下为什么呀。
12:12
这个地方因为我们是当前目录,加一个吧,加个当前目录。嗯。我们这个不是我我这个文件在哪建的没有是吧。删除那个键是吧。这个东西还真恶心。好,这个表呢,建完了。那应该四个分成五个区,但那个五个区呢,会有两种情况呢?什么情况呢?是这样的,它是按这个一个空的一个aaaa,第一个这这毋庸置疑吧,那肯定是这样,那就是第二个是aaaad呢还是BDBB呢?那按照顺序来看,应该是DDDD是不是?
13:17
但是如果你想一下,他真的把D放在这儿。后面那这两个东西没用了吧。对吧,想一下来。三个球。不是这三个区嘛,这才几个键进来,ABCD4个键为什么分成了三个区啊。他自己给排序了,是不是他自己给排序了,要不然真的你传的键他也不放心对吧,底层框架他做了优化了对吧?啊他给你排序了,要不然你想想这个写的是滴滴滴D,那至少就算你最后这个什么。
14:07
后面两个区都没有用吧。你想想他他有比这个什么比D大比C小的数据吗?不可能吧,哎,所以说他自己做了优化,自己做了优化,他会给你进行排序啊,进行对你这个数据进行排序,它怎么排的呢?它同样的也是按位比较啊,按位比较来排序的,OK,这个我们所讲的都是这三种方式。看一下都是在哪魅力行里面操作的吧,正常我们之前不是提过API操作比较多吗?API当中怎么来呢?来找到我们当时的这个API创建表是吧。诶,应该是这个test对吧,在这。创建表的table。可以的。那你想想看,如果说设置。分区键。
15:03
看第二个参数。它有两种方式,一种就类似于你用16进制那种方式,对吧,你指定开始和结束,然后告诉他多少个区,他自己给你吧,平均划分,平均划分,然后呢,还有一种是什么。Split case,但是你要注意一下这个split case是一个什么类型。是一个二维的半塔数轴,能不能想通?先自己想一想,它为什么是一个二维的半的数组呢?它的类型看自己能不能想通。为什么是二维的呢?那么之前放UK也好,放Y6放负,放的都是一个一维的Y的数组啊,那这个地方为什么是个二维的Y的数组呢?
16:02
来看,首先我们提过,在HP的底层啊,它只有一个半的速度,一种类型,对不对,那它的一个分区键是不是最终也是按照半的数组来存的。那你想想看,你分区键它本身是一个什么。本来就是个百分数,它本身就是一个数组,对吧,你看这100放一块,它是不是一个数组啊,这东西放一块是不是一个数组对吧?这个数组这个AAAA这个东西啊,真的存到HB的底层了之后,这个AA它本身还是一个数组对吧?那这个结合在一块,它这一个二维数组能不能明白。这个地方是说明它的一个类型的一个原因啊,就是说分区键它本身是多个是多个啊,所以说它要用一个数组来存,但是H底层呢,对于每一个键它是不是都是用派的速度来存的,所以就形成了二维数组对吧?啊,所以就形成了二维数组啊,这块要理解的啊,要理解到OK,这是它的一个预分区啊,公司当中肯定都是用预分区的啊,用预分区的。
17:03
然后还有一个点就是工作中心用脑,一般情况下你看啊,刚才我们分成了五个区,它相对来说比较平均的,幺零零四两个,幺零二两个,1031个吧,相对来说平均的,因为当前我们234这三个节点负载都差不多,没有多少数据,对吧?啊,没有多少数据,所以说它这个。相对来说比较平均的话呢,比较平均的话呢,如果说是六个的话,它一般会一台机器两个,一台机器两个是这样的比较平均的,因为它考虑负载第二点工程当中。你具体第一个你要刚才说了,你要看。数据量来定这个微的个数对吧,第二个它其实也有一个上限,就一般啊,一般啊就是常规的就是人家的一个工作的一个经验的一个总结,一台服务器呢,放两对于针对于一张表啊,同一张表的情况,针对于一张表放两到三个region。放两到三个瑞,这是针对于同一张表啊,不是说这一个reading so只能放两三个reading啊,那你1000张表你怎么放呀,对吧,同四中是针对于一张表放两三个人能不能理解,也就是说我们当前这个STOP3啊,我们最好的方案呢,你分成六到。
18:16
九个区。是这个意思,那你六个的话是不是一人两个,你九个的话是不是一人三个,哎,这个两个三个就一人维护当前大表多少个规律指的是这个意思啊,这样稍微记一记的啊,稍微记一记的啊,这是啊,工作当中一个经验问题就是有很多公司都会聊这个问题啊去。啊,都会都会聊到这个问题,那我跟大家说一下啊,两到三个,两到三个。大家注意一下两到三个,然后如果说你集群比较大是吧,你公司业务需求量比较少呢,你可以把这个数据量降低对吧,你不要过于太高了,什么一个切成了十个就是三个。只有三个机器,你建一张表,然后非得建30个预费啊,没有必要啊,这就太多了啊,没有必要。
19:06
这是它的一个预分区。
我来说两句