00:00
好了,同学们啊,那咱们接下来看一下咱们的第六章啊,就是咱们这个查询性能的一个优化,好吧,我们看看咱们这个kidding在查询的时候有没有什么方式能让让能让咱们这个速度更加快一些啊,首先再次介绍一下咱们这个K的那个查询引擎,在KS里边,咱们的查询引擎slideer也是使用Spark作为这么一个计算引擎的,它是一个真正的分布式产品引擎。特别是在咱们那个复杂查询里边啊,这个方面会性能会优于咱们之前的那个Kate,然而仍有许多关键性能,它的一个点需要怎么去优化,那除了上面提到的一个设置适当的计算资源之外呢,它还包括减少小的或者不均匀的文件,设置适当的分区啊,以及尽可能多的修剪top的文件啊,那在这几个几个方面是吧,咱们这个K4.0和咱们这个Spark是提供了一些优化策略来提高咱们的产品性能的。那么接下来就看第一个啊,就是使用咱们那个roll可以排序列,快速的读取咱们这个part文件啊,就什么意思啊,当你在创建cub时,我可以指定我那个维度列的一个排序。
01:10
啊,当保存咱们那个B数据数据时是吧?我每个QB的它的第一个维度将用于执行排序操作,那其目的是在使用排序列啊进行查询时,我通过那个park文件,它的一个最小最大的索引就可以尽可能的过滤我不需要数据了。那我在哪来排序咱们那个这么一个列啊,在咱们的这个Q补构建的高级设置中,我这个ROK的顺序就是咱们的配排序顺序,我接下来就以咱们这个第三个这么一个Q5给大家演示一下,好吧,在咱们这个modu里边,咱们有一个四的Q5。在这个serve置课普里边啊,大家可以修改一下啊,在这个action有一个edit,咱们修改这个课普的时候,你来到哪啊,来到这个advance setting高级设置里边啊,在咱们这个高级设置里边是吧?除了可以设置这个聚合组,你再往下你发现啊,它就可以设置这么一个ROK这么一个排序了啊其中啊,咱们这个RO开引方向有一个drop,有个M加二有个DP,那如果说你将来注意啊,咱们这个地方因为有那个延伸维度是吧,所以说它这块看着比较怪,那这样啊,我把我这个延伸维度换掉啊,在我这个dimensions这一块啊,Dimensions这一块我把这两个延伸维度是吧,我给你换成这个正常维度,好吧,你就比如说我把这两个延伸维度,我给你换成normal正常维度,那这个也是一个no,哎,正常维度可以吧,咱们给他这个保存一下啊,先给它保存一下。
02:34
保存完以后呢,咱们再次打开咱们这个四尔的Q5,那那我们这个A在咱们这个全部把这个dimension换成正常维度以后呢,你接下来打开咱们的高级设置,你发现啊,在咱们这个高级设置里边,我就有这么一个r case啊,就是我四个维度啊,都可以作为咱们的R进行排序。那咱们这个ROK它放的一个顺序,就是将来我的ROK的一个排序顺序啊,如果你把你的job放在前面,那将来我就优先按照这个drop排序啊,就是我的这个每一个岗位我都排出序,那桌步排完呢,排领导,领导排完排这个名,那个部门民生部民生排完才排这个位置。
03:12
那如果说咱们将来有什么需求啊,将来我经常会按照这个,会按照这个部门我搜索,我给我这个过滤,那所以说你你又可以干嘛,你就可以把这个d name你给我往上调啊,选中咱们这个三这个位置往上挪,我把我这个DNA是吧,我给它挪到第一个位。第一个位置啊,就比如说我将来啊,第一内部排完,我希望他按照什么呀,我就希望他按照咱们这个位置排可以吧,那我就看可以把这个位置啊也往上挪,挪上挪上来,然后位置排完按照这个什么呀,按照这个岗位排,最后再按照咱们这个这个这个领导排,那这样来你可以手动来规定咱们的柔顺序,这个柔顺序啊,只要你设置好了,就可以大大的加快,哎,咱们这个将来使用咱们这个排序列来过滤咱们这个文件了啊,因为它底层的一个存储的一个顺序是吧,就是按照咱们这个按照什么呀,按照咱们的这个你设置的这个RO key这么一个顺序来来存的,那将来我按照这个ROK我去过滤,我去排序,它的速度就相当快了,是这样的啊,这这是第一个优化点啊,那明白这个优化点以后呢,那咱们接下来再看第二个。
04:17
第二个啥意思啊,第二个就是咱们除了可以指定咱们这个ROK的顺序以外呢,我还可以指定咱们这个沙的外列啊,在咱们的这个ROK里边啊,你可以选中一列为沙麦列,那这个沙班列什么意思啊,就是分区列,Sat分区分片的意思啊,咱们就可以按照某一列来对我的part文件进行分区或者是分片。那你一旦分完片以后,我可以干嘛呀,大家可以读一读这这么一个概概念啊,就是K04.0底层,它存储用的是这个park文件。并且啊,咱们这个帕的文件在存的时候,我会按照某一列进行分片,那这个分片的列啊,在K列里边,我们就称之为沙的白列,而咱们这个K点啊,默认是按照咱们这个上的败列进行分片的,分片能够使咱们这个查询引擎我跳过不必要的文件来提高咱们的查询性能,就这个东西啊,就类似于我have有的分析表,我指定一个字段分区,那将来我按照这个字段我给他排我我给他这个过滤的时候,我们这个have是不是就就可以避免咱们这个全面扫描了,我直接拿出我这个我所需要的那一个分区,我进行查询搜索是不是就可以了,那咱们这个park的文件也是这样的啊,它底层有这么一个shut by列,而我这个shut拜这么一列,哎,就可以。
05:30
把咱们这个数据进行一个分区,那如果说你将来按照这个沙特麦列你去过滤了啊,那我那我们只需要拿出这一个分区的数据进行这个查询就可以了,就没有必要全表扫描了啊是这样的啊,那咱们就最好干嘛呀,我们在选这个沙发链的时候啊,最好选择高激列,就是基数高的列啊,哪一类的基数越高,我们选择它,那接下来它将来分的片就比较多啊,并且啊,咱们这一列会出现在多个q Bo弈中,就比如说咱们将来在咱们在在在选那个聚合组的时候是吧,我这一列,我这一列我作为一个什么呀,作为一个这个强制的这个这么一个维度,那咱们就就把这个强制维度是吧,作为咱们的沙拉卖点啊就可以了,好吧,啊,那如下图所示,咱给你举了个例子啊。
06:12
如果说咱们将来按照那个时间,按照那个月去过滤,我就会生成那个对应的S格奔特是吧?那如果说我按照维独A作为这么一个沙白列,我进行飞片,那这个时候啊,每一个萨gament里边都会有相应的分片,那如果说我们在查询的时候是吧,按照这个时间和这个维独A经过率,那我们这个kding就会直接把sgament,就是每一个sgament它对应的这个分片拿出来,就没有必要全本扫描了。啊是吧,那这样一来就会大大的提升咱们这个查询效率,查查询效率就是我每一个就是每一月,每每每一月都有一个S卡本特,而在我这每一个S卡本特里边是吧,我就我就按照这个维度A进行分区分片啊,杀到1323到三,上到四,杀到五是吧,那将来我如果按照这个A,按照咱们这个月份啊去萨格ment的过滤,然后按照这个A过滤的时候呢,我只需要拿出它对应的分区就可以了,就没有必要全面扫描,所以说啊,咱们这个分区列啊至关重要好吧,啊,然后呢,人家还给你列出来一个底层的一个存储目录啊,就咱们那个帕的文件啊,它存储的时候是先以谁存。
07:13
是先以咱们的那个Q补存,就比如说我有这么一个Q补是吧,我这个first,我先把这个first q我给它存在一个,存在一个目录里边,而在我们这个first目录里边是吧?呃,First q里边它就有这么多个sment,你每一次构建它都是一次s sment啊,那咱们的每一个sment里边是吧,就有这么一个qbo,哎,那在我这个q boy的ID里边还有什么呀,就有咱们那个什么呀,你看啊。在咱们这个q boy的label里边仍有许多part文件,而咱们使用这个莎白列进行进一步的就可以裁剪咱们part文件是吧?人家官方告诉咱们了,在这个circlel插景里边,我只支持以下的这么一个过滤操作,来利用这个上败来来拆减,就比如说我的这个inquiity啊,还我的in啊,我的insight啊,还有这个in呢啊,通过这四个条件,我们就可以直接读取咱们所需要的那个刹大麦那那么一列,好吧,那我们接下来就来演示一下如何设置咱们的刹脉列,好吧,怎么设置非常简单啊,你比如说我想把这个ROK进行排序,排序以后呢,我按照这个d name,我进行杀拉派啊,进行分区,那接下来咱们将来在底层存这个文件是吧,每一个segment里边是吧,它的每一个分区啊,就是按照咱们这个部门进的分区,那如果说将来我按照这个部门A过滤,我只需要找到这个部门A的这么一个分区就可以了,我在我每一个segment里边,我找到我部门A的这么一个分分区,我就可以对它进行计算了啊,所以说啊,咱们就可以进一步的对咱们这个park的文件进行一个。
08:37
裁减进行一个过滤是这么一个逻辑,好吧,那么接下来把咱们这个低内部是吧,放到第一列,然后呢,并且我还给它给它设置成了这么一个分区列,那么接下来就可以点下一步了,下一步啊,再下一步是吧,然后咱们给他C下,整个C完以后呢,你就可以对咱们这个Q补进行一个构建了,啊,那这个时候啊,咱们这个Q补在构建的时候,它就会按照你设置的那个顺序和那个分区列进行构建,那将来你进行查询的时候,那咱们这个这个Q补啊,这个速度也会比较快。
09:06
好吧,就当咱们这个Q5啊,在工新的时候,它就会根据咱们这个分区列对咱们这个part的文件进行一个重分区啊,如果你没有指定呢,我就会对所列进行重分区,好吧,那咱们这个分区列和咱们这个排序大家要简单了解一下,就是你在将来在设置这个科目的时候啊,一定按照你们这个数据的一个情况,我们给他进行一个合适的排序和一个合适的分区,好吧,那咱们的这个第一个优化啊,就是查询优化。就是使用这个合适的排序列,还有咱们这个沙的外列啊,来参咱们这个文件啊,我就讲到这儿好吧啊。
我来说两句