00:00
那么接下来我们来看一下第三章可house的语法优化规则,大家注意这个,呃,很多框架底层是不是自动帮我们做了优化,比如说have have,比如说咱们的什么大小表交呢,还记得吧,还有什么位词下推啊等等等等,还有什么各种这那的,你像那些事是是什么,是不是have他有个优化器呀,哎,对,那他是不是帮你优化,为什么要有个优化器?因为不相信开发对吧,是不是啥人都有啊,动不动就要靠着distinct的,动不动就要欧半全局排序对吧?然后回头还说嗯,你这个太难用了,不好用对吧?就像那句俗语,所以它比较粗俗对吧,说说什么拉不出屎,还怪地球没引力对吧?就是为了避免这种情况,它底层呢,做了一些那个定义好的优化规则,那hi里面叫什么?里面叫什么c do嘛,默认是不是开启的啊,那咱们这边click house呢,也一样有类似自动优化的规则,那它是基于什么r Bo。
01:13
其实hi的CBO早期也是r Bo同学们,但是后面他就自己换了个名字,又做了很多事,叫CBO啊。O就是优化的单词吗,这样。B就是贝斯啊,二就是规则啊,行,那我们就必须要了解这个,你你了解了才能说你深入研究了它嘛。对吧,也不是瞎掰的啊好,那基于这个呢,我们先准备几张表啊,这里就要用到我给大家的数据了。呃,官方测试数据,这两个是一个大包。那这个踏包我可以给大大家看一眼啊,这首先呢,这是一张表,叫he his v1,下面这个businesss v1,那这个有800多万行多万条,那下面这个有170多万条。
02:09
靠,等一下你就知道了,那它的字段数就类似一个宽表,这是180加的字段,这个也是180加字段啊。其实从这说到这儿,咱们就插一句题外话,为什么肯定把耗要作为存储宽表呢?在架构里为什么这么设计呢?因为他本身就擅长这种数据量又大,字段数又特别多的这种宽表嘛,反而是小表他不适合对吧,因为什么呢?因为他是不擅长交易呢。对吧,他交是比较奇葩的交啊。好了,我们瞅一眼这个大包里面有什么?我双击打开。我这种方式是不需要你手动create在insert的,当然那种方式也可以,我给大家的是最简便的方式,直接把这个包解压到click耗时路径下就可以了。
03:07
就可以了,因为它怎么包含了原数据呢。原数据里面,你看它默认的库名叫data says,这是库名啊,再点进来,其实是什么分口嘛,如果你想看他的建表语句来双击打开,诶,啊完了用DDF打开,呃,那就打开一下呗。你啊。是不是一张表啊,Catch是加载的意思啊,加载,那你看这个字段,你数数几个啊,这些是字段。诶。这张表台。130多个。那我之前数了180,数错了啊。
04:03
再数一遍啊。是133嘛,啊这意思,那你在你想看是不是可以看一下其他的呀。诶,那要加包了哦,这这是原数据,那数据呢,你看点进来点进来。再点进来,这是不是他的数据文件啊。是不是肯定有耗子存的时候都是这些格式的,你看这为什么有这么多个,是不是每个字段它存了一个B呢,还存了一个MRK啊。还记得吧,它是列式存储嘛,一个字段,一个文件一个字,为什么这么多,因为字段多吗?字段多好,再往前大概是这样子啊,然后这个BS我们瞅一眼就好了,瞅一眼它的见表,看他的舌口,再数一下它的字段数是不是够不够宽。
05:00
这个应该就多一点了,100。81这个是181。行好了,那我们直接导入吧,怎么做呢?很简单,我把这个关了啊,压缩包也关了,没用,把这两个包上传到你的服务器啊,咱们现在叫服务器了啊,那我这边我是已经上传上来了。这个路径是我自己建的啊,自己建的。然后这里有两个包,接下来干嘛?解压碳杠有什么啊?用JSVS肯定报错了,有Z吗?A是什么?TZ,你还记得咱们有些包是什么点t.TZ啊,这种才要加Z啊,没有TZ你就不用加Z了啊。那我直接考了,我不写了,浪费时间啊,嗯,这个。
06:10
好,再解压另一个。大家看我解压到哪里?Click house的数据存储路径啊,V默认是VR live click house解压到这里,它本身的路径是不是有个文件夹叫data对吧?然后我们压缩包里面也有data,它会放进去,按照它的格式放进去没事,那放进来之后大家可能还需要做一个事儿啊。你看VR力我是不是两个都执行了啊,V应该都执行了进来之后。这里是不是本身有这两个路径对吧,他就把相应的文件放进来了,好,那我们进一下data,看一下,现在是不是多了一个库啊,叫data size,好再进来有两个表啊,好随便看一个his。
07:03
哎,我要看什么来着。啊,这里啊,就到这个库明这一层啊,你看。用户名root啊,那我们安装click house的时候,它自动帮我们创建了一个用Linux用户叫click house,那你操作的时候要用这个用户,那你这里需要改一下啊。Change on change honor,好,把这两个库明的,还有原数据也得改,因为你的原数据路径也是root,用户都得改一下啊。我们都改成click house,好,现在可以了,那你在里面能找找到吗?大家想想是没有数据库没有吧,为啥你要重启啊,对吧,你得重启,那怎么重启呢?So click host现在命令更简单了啊,不用什么system CDR了,Art restart。
08:05
就可以了。然后他。把它戒掉,然后呢,Start很快啊。杠M,来,我们瞅一眼,So data basis是不是多了一个数据库,叫data says,好,来,我又使data says so tables。这里啊,两个表啊,来给大家做个操作,Ne count from his a,大家觉得得执行多久?有800多万了。大家对click house信任到什么程度?来,我们给大家几个选项啊,一个是小于一秒,一个是大于一秒,然后在五秒之间,一个是大于五秒,哪一个,哎,没毛病啊,来回车啊出来了。
09:01
多少,首先这个数据量多少,887万对吧,0.006秒。其实为什么这么快呢?它保它保存了一个code文件嘛,还记得吧,你走code,它是不是直接查这个文件就行了,其实不是它读取的快,而是它优化,这就是其实就是优化啊优化。但是如果你是这么做啊,它有一个字段叫UID,我知道啊,我直接写了。他是不是也很快啊,你发现没有上面这两个有什么区别。你有没有说它读取函数啊,它后面有吧。这个后面这种是实实在在去读取行数的,但是你看它每秒钟读取多少。是吧,五个斤啊,屌不屌,你看他处理了多少行数据,887万行就是887万嘛,明年不是万吗,百万吗?
10:03
快吧,你要是have,你试一下,你把这张表数据导过去,你再count一下,行,呃,另一张表也一样啊,那么目前咱们数据就准备好了,另一另一张表咱们也瞅一眼呗,那个叫。这个才167万。0.003,他直接查那个文件嘛。好,我赶紧把这个改一下,这个只有130多个知道啊。嗯。
我来说两句