00:00
那最后呢,我们就聊一个,呃,分区分总数设多少比较合适啊,那首先我们了解到一个表的数据,分片的总数等于多少呢?是不是等于我的分区数乘以它的每个分区的分统数啊,这是不是总的一个数据分片的数量啊?那这个数量我们控制在多少比较合适呢?啊,在不考虑扩容的情况下,略多于整个集群的磁盘数量,那这样的话可能呃,IO情况就比较好了。那单个数据分片你设多大设多小都行,但我们官方给的建议值是一到十个G的之间。那我们想一想,如果太小会怎么样,太小了你是不是比较分散呢?那这样我们聚合效果就不太好啊,那而且呢,每一份都要从一个元数据,那元数据的大小就变大了,它的压力就变大了,对吧?那如果数据量过大怎么办呢?
01:01
数据量,呃,单个分片的数据量大一点啊,就相当于是比较重啊,跟一个胖子一样,那不利于我们副本的迁移补提。对吧,因为你你要动的话,比如说其中你要只动某一块数据,那你必须整个分配一起动。啊,你不能只动它啊。而且会增加我们那个什么做一个表结构变更啊,Stemmer信息变更,或者我们roll up他从事的时候,它代价是不是也很大,因为它们的力度是以一个数据分配一个table right为单位去处理的,对吧。那如呃,那前面呢,我们其实一个是根据数据量,另外一个是数量,这有两个原则,那如果他们两个有冲突优先呢,我们建议是按照什么数据量这个原则来啊,这样比较合理。另外一些注意事项呢,就是建表时候,每个分区正常分统数是呃,统一指定表的时候啊,那这样每个分区都一样,但是我们说如果是动态增加分区啊。
02:10
啊,我们增加分区的时候,因增加的分区可以单独指定分桶数啊,这个前面也是讲过,那同样可以增加,也可以指定,呃,它的分桶数量少一点都行。另外要注意一个分区,分桶数量指定后不可更改。对吧,后期你节点扩容,你想要增加他的一个,呃。啊,那可能效果没那么好啊。那下面有个例子,你看,呃,假如呢。我们有十台be节点,每台be只有一块磁盘,那表的为500兆大小。那我们考虑它的分片数可以是几个呢?啊,四到八个分片。
03:00
对不对。这很合理吧啊。呃,那五个G的一张表,那就是八到16个50G呢啊,一般给个32个。当然了,前面我们说的这几个例子,它呢是。单分区,也就是说只分筒对不对,只分筒,那这样其实分开之后每一个才才多大呀,啊四到八每一个100多兆到100多兆对吧,那这个呢。每个差不多也是几百兆对吧,控制每个分片几百兆,其实是比较比较常用的啊,那比如说这个三除以三十二五个G除以32个分,呃。分片数。那差不多一个,我想想啊。也是差不多200兆左右吧,100多兆吧,啊这个都是一些比较建议的一个情况。啊,这是是不是根据数据量大小来做一个啊区分,那么如果超过500个G啊,或者达到了上百G的一张表,那这个时候我们建议还是要做一个分区啊,这也很常用,每个分区50G,那就可以按照之前这个原则了啊,50个G,那我就几十个分片啊,16~32都可以。
04:17
那同样如果你是5TB的一张表,那你也是分区,把每个分区平均控制在50个G,那还是怎么样,每个分区16~32个分片。那表的数据量就你就看一下就行了,受就行了。那而且你要注意这个data它是包含了副本大小,比如说我一张表是十个G,那受德塔看到,比如说我副本数是三,那看到就是30个G啊,所以你在算一张表的数据量的时候,受data塔看完之后要除以一个副本数。这就完事了。
我来说两句