温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
好,那我们接下来看一个大小表交易,Have是不是也有一个大小表交易呢?优化在早期版本,咱们是不是必须把小表写在。左边吧,对吧,小表驱动大表嘛,买so也一样啊,但是hi在高版本是不是那个CPU帮我们自动优化的,你写左写右它都自动。能够把小表加载到内存是吧,它能识别到,呃,那咱们肯定有耗子不一样啊,它是什么?其实从我前面介绍的原理大家也能想到了呗,它就用的时候怎么做的呀,把右边的表加载到内存是吧,我管你大还是小,我就是这么实现的。所以你觉得咱们小表应该写哪右边对吧,你非要join,你就得让尽量让右边的数据量小一点,来我们来试试呗,刚才大小表都建好了呗,小表是不是有一条有一个visit VR是不是1万条啊,够小了吧,相比他们100多万800多万啊,那么来试一下,许在右肯定是能跑出来的,我们看一下执行的时长。
01:13
啊,一单上去就带跑了,速度不算快,但至少能跑。你看每秒钟处理这么多啊。还是蛮快的啊。其实可卡耗快一个最重要的原因是什么?我觉得啊,数据在本地,你是不是只要IO能达到,基本上效率就差不了。MR的话是不是得跨节点跨网络传输啊,那很多时候带宽就是你的瓶颈,好,我们看一下跑完了26秒。对吧,那我们再来试试把把什么右边我写的是大表啊,跟上面这两个的区别在于这儿。
02:05
现在是把他们交换了一下位置啊。看得明白吧,好,He v1是800多万行的一张表,那另一张是1万行的表,前面已经跑过了,我们再跑一下另一个大表占右啊,如果我没记错的话,应该是跑不了内存超限制。好了,跑完了吗?并没有你以为跑完了想太多。啊对,看到这个了吧,然后报的什么错呢,然后一堆一堆对吧,这个。内容内存超过限制啊,他说想要使用3.32GB。这个是哪来的,这是我我虚拟机一共才四个G啊。当然你可以尝试给大看能不能跑出来,为什么会超限呢?同样两张表,我换个位置,一个能跑一个就不行了。还是咱们讲的原理,它是把右表加载到内存,那他一下子要把880多万条数据加载到内存,它就顶不住了啊,他就顶不住了,这个就很明显了。
03:21
嗯。如果你们配置配置够大。说哎,我能跑啊,没影响啊,那那你看看时间,肯定时间要比原来的长,对吧,这就特别明显了啊,记住啊,大小表就用小表在右,小表在右啊右啊跟亥普相反,亥普是在左。你看永远是拿着右表中的每一条记录,也就是加载到内存里边每一条,去左表里面找找记录能不能匹配上啊,这是它的一个基本执行方式啊。
04:05
这要特别注意啊。
我来说两句