00:01
好,我们设计完这个预分区之后呢,你不能够设计出来就不管它了啊,我们呢,测试调优都是很重要的一部分,我们回过头来还要看一下设计上有没有什么瑕疵啊,这个地方瑕疵还是比较明显的啊,还是比较明显的,那比方说你这个地方统计的是用户加月份来进行去,呃,设计它的这个分区号了,那对于我们上面提到这两个需求,如果是张三12月份这两个值呢,都已经确定了,是这样吧,两个人确定的话,你是不是直接拿它俩一拼接,一哈希就得到固定的一个分区了呀。得到固定一个分区,然后你对着这个分区号去进行扫描就可以了,哎,什么意思呢?咱们把这个需求给你拿过来,再给你列一下。好,如果是这么一个需求的话,这个分区号很好找啊,很好找,我们把这个扫描的格式呢,也给他拿过来。这个分居很非常好找啊,我们前面这个,呃,这个拿错了,是他对吧。好,这个分卷呢,非常的好找,咱们接下来写一下啊,叫分区号,我们直接来找啊,那就是对。
01:06
花心呢,是对。张三啊,再拼接一个12,那么12月份嘛,以他哈希的一个int值百分号120,你就得到了这个分区号,然后填充零啊,填充零,填充零啊,那假设我们这个值是15号分区,那就给它填充成015,那你在扫描的时候很简单,前面只要加一个015。就可以了啊,还是那句话,你要觉得丑,你就中间加一个分隔符,就像就像这样啊。都加一个分隔符就可以了,我们是定长嘛,所以你加分隔符固定的位置就可以了,你也可以不加啊,你要是对丑的容忍程度比较高,没有强迫症的话,不加它还能省一个符号啊,省一个back的一个空间,对吧?好,我们不加啊,你填下来的就是015 015,那第一个需求只需要扫描一个分区就可以了,效率非常高啊,效率非常高,那这个是赶巧了。你运气要不好的话,比方说第二个需求。
02:00
啊,比方说第二个需求啊,这第二个需求你就痛苦了,咱们来复制一下。把它都给粘过来啊,CTRLC。安位都粘过来之后,他那是所有人在12月份分区,那你这个分区号怎么填呢。分区二怎么填呢?你根据这个公式。啊,你这个12你好,写前面这个用户呢,没法填对不对,用户是各种各样的值都有,那对应这个哈希值呢,是不是每一个分区里面都会有所有人的一个12月份信息啊,啊,最终你会发现啊,每一个分区中都有。12月份的数据啊,无法扫描,这会造成你无法扫描的一个情况,哎,你要说无法扫描吧,他也不是完全无法扫描,你要硬来还是可以的,对吧,就怕你硬来嘛,硬来还是可以的,每个分区都要扫描啊,无法精准扫描吧。啊,必须每个分区都去扫描。
03:04
你必须每个分区都是扫描一下你对应的分区号,没法填,没法填怎么办?只能这样000。000这个扫描一次,这扫描的是零号分区对吧?啊叫所有的分区。好,对应你这边如果想找到下一个数据的话,需要一直写一直写一直写001001,这是第一号分区对不对,一直写一直写省略号啊,一直扫描到我们的122。122分119对吧,对应119。等你把这120次全扫描完成之后,你对应这个需求的数据呢,才能够拿出来啊,那这个呢,有的同学他就已经容忍不了了啊,让我操作二一百二十次啊,其实也不让你操作,你写代码写个循环不完了吗?这个可以通过循环来完成对不对,但我们考虑到效率的问题啊,你即使是用循环。也有点不能接受,就读这一个数据要读120次。
04:00
你呃,让我干,我肯定不干,但如果让循环干的话呢,我也不想让他去干,效率比较低,对吧?咱们来写一下阿娇必须。扫描120次,好,那这里呢,我们就要想一个方法给他优化一下,让他不要扫描这么多次啊,扫描十几20次还能接受,100多次不太行,效率太低啊,怎么样给他优化呢?哎,这地方就提到了,我为什么给他设计120个分区呢。你可以给他提前把分区啊,和月份对应一下嘛。提前先对应一下对吧,咱们来写一下叫提前。将月份和分区号对应一下。啊,对应一下,如何对应你规定零零零号分区。啊到。009号分居。零九分区。存储的都是。一月份数据。对吧,这为什么我设计120个分卷就是为了这个啊,那你对应的复制一份啊,这边呢,写001啊,应该是010对吧?嗯。
05:08
零幺零号分区,等到019号分区存的都是二月份数据,对吧,你依此类推,一直到最后的时候呢,应该是嗯,幺幺零号分区对吧,到119号分区,119号分区不就最后一个分区了吗?对吧?存储的都是12月份的一个数据啊,提前给它对应一下,那这个对应的我们只需要修改一点就可以了,就是这个分区号是如何计算的。只需要改这个就可以了,你不要直接对它去取模120,不要去取模120,取模几呢?取模十。啊,取模时,你看你取模时之后,它不是会得到一个对应的数嘛,比方说是一个五对不对,那你再加上一个值就可以了,加谁呢?加这个月份对应的初始分区号。对吧,咱们举个例子啊,举个例子,比方说是啊,九月份九。
06:03
月份的数据,如果它是九月份数据呢,你对应的正常去计算,正常去哈希,正常去取模,得到一个五,那五需要加个几呢?九月份对应哪个,对应的应该是090。啊,080啊,应该是080对吧,080啊,080~089。是这样吧,它零对应的是一月对吧,一对应的是二月11对应的是二月,那我八不就对应九月嘛,对吧,你这个地方加谁呢?加80就可以了啊加80加完80之后再进行填充,比方说85,你就给它填充成085,哎,这就是它的分区号了,一旦你这样对应之后,你这个地方就不需要扫描120次了。啊,就不需要扫描120次了,只需要扫描十次就可以了,只需要扫描十十次就可以了,你比方说你要扫描得到。12月份所有人的数据只需要扫描十次就可以了,那怎么扫描呢?你这个十次对应的就是。
07:09
不用从000开始了,直接从。110开始对不对,110啊,这边是112。1121直到119就可以了啊,这只扫描十次就可以了,前提是你要提前对应好,并且你这样设计并不影响最初的那个设计思路,就是说用户的数据呢,要尽量打散在分区里面,还是打散到12个分区里面。一个用户不同月份的数据还是放到12个分区里面,只是这12分区有固定的范围了,一号分区的数据一定是在这么十个分区里面啊,先提前给它对应,好修改一下,一个对应就可以了啊,那这个呢,就是我们加上分区的一个优化了啊,也是作为的一个抛砖引玉对吧?可能未来大家呢,在企业开发里面有更好的一个设计方案啊,那你呢,也可以自己去思考啊,自己去想如何去进行设计啊,我这里呢,只提供一些基础的方法啊,个人觉得呢,还是比较实用的一些方法啊,那我们的柔设计呢,整的来说呢,就介绍到这里。
我来说两句