温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
好,现在呢,我们先来介绍这个filter对我们啊整个一个位次下推和性能的影响,呃,现在呢,我们就是刚才最简单的一个,呃,查询此处呢,我把这个set呢先给删掉。啊,只是呢,从我们的test Internet的存储桶里面呢,呃,直接查询这个GOGR这个序列。好,现在呢,我们点击一下提交。啊,翻到最后一页查询我们的这个执行情况。此处呢,我先截个图,先不讲解啊,先截个图。把这个。呃,往这边右边右边拉一下啊,然后完了之后呢,我们截个图。好,我在这呢盯一下,我先按shift f3把它给隐藏起来,呃,接下来呢,我们去改个东西,把这个go gos呢,呃,换成一个表达式,是两个字符串相加。现在呢,再次点击submit提交查询,我们再翻到最后一页,看这个执行的情况。好,那么现在呢,可以看到啊,我再截个图啊,不用截图了,我直接shift f3把刚才的截图呢给展示出来。
01:05
好,可以看到我们这里呢,有一个变化,就是原先呢,我直接写GOGR的时候呢,它只有一步操作,现在呢,因为filter里面呢,换成一个表达式,哎,那么这个操作呢,就没有被合并达成了两步。啊,那我们可以看一下现在是哪两步,首先呢,第一步就是读取,呃,读取一个范围的数据,那么是读取什么呢?多大范围呢?其实按我们这个时间范围呢进行读取,然后呢,进行了一个过滤,呃,这样呢,需要注意一个问题,我们这个form写的什么呀?写的是不是存储桶呢?啊那么你读取的时间范围的数据,你读取的是哪一个measurement呢?啊,其实这里没有指定说明,这里面其实是读取了啊这个存储桶里面所有测量名称的前一小时的数据。呃,然后呢,我们可以看到第二步操作呢,其实是一个filter过滤,也就是说它在所有读取的这个数据里面呢,又把measurement为GOGRS的啊给过滤出来了,呃,那么这样呢,也可以看一下后面的这个类型,之前呢,我们filter是在这个read操作里面,现在呢,变成了一个filter transformation啊变成了一个在内存里面的转换操作,这就跟我们word里面的,哎,说这个没有位下去的情况呢,是一模一样的,可以看一下。
02:16
哎,跟这张图。呃,现在我们是不是先把数据全部读到这个内存里面来,然后再在内存里面进行过滤呢?啊,现在就是这个情况。啊,那么接下来呢,我们看一下它的性能啊,我们看一下它的性能,看一下什么呢?啊,看一下这个总的总的执行时间。呃,可以看到啊,这里面是1325270419纳秒啊,之前呢是645593纳秒啊,那么那这个纳秒呢,我们平时很少接触,我们把它换成秒来看啊,这里呢,我对这个645593呢翻译了一下,它其实相当于0.006秒啊,那么我们看一下这个1325是多少。1325270419,然后再看一下它呢,现在是1.32秒,也就是说我们这个位词呢,是否下推哎,直接导致我们差的这个200倍的性能。
03:12
呃,所以呢,这里要注意啊,我们的这个filter呢,如果想要实现这个位下推呢,在当前的版本里面。啊,他对这个过滤条件啊,是比较敏感的啊,那么你如果想实现这个位置下推呢,过滤条件就必须得是一个非常简短的明确的,哎,不带计算的,直接给定常量的一个表达式,而不能在这里面呢去做一些运算。啊,这里呢,只要发生运算,那么就会取消位此下推变成两步操作,从而影响我们啊整个flux执行的性能好,最后呢,总结一下这一节呢,我们主要就是讲了这个filter呢,它里面的表达式,呃,怎么样的写法对我们整个flash脚本运行的一个啊性能上的影响。
我来说两句