00:00
好,介绍完Phoenix的使用之后呢,接下来咱们介绍Phoenix一个非常重要的优化啊,叫PENIX2级索引,呃,这个二级索引呢,如果你学过MYSQL相关的一个内容的话,你应该知道啊,创建二级索引之后呢,能够将全表扫描优化为范围扫描效率呢会更高一点啊,那这个二级索引呢,如果我们想要使用的话呢,首先你需要去修改一个参数来实现这么一个功能,我们把这个参数呢给它复制一下啊。对应的来到我们的这个文件里面啊,先把之前的连接呢,都给它关掉,对吧,连接关掉之后呢,我们到对应的这个目录里面啊,CD到OBD Mo h base。菲里面。好,在这个目录里面呢,我们VM修改h base set文件,在这个文件呢,最后啊,最后端呢,我们直接插入,然后把我们这个东西呢给它粘过来就可以了,这是我们二级索引的一个参数啊,保存退出,改完之后就要记得分发一下啊,H base steml。
01:01
好,等我们分发完之后呢,你要记得重启一下你的h base,它才会生效啊,不重启是不会生效的,Stop h base执行。好,等我们关闭掉HP之后呢,再使用相应的命令给它启动起来。在实际开发里面,当然是不推荐大家频繁的去启动关闭你的h base的,对吧?这玩意儿应该是不关的啊,那我们这里呢,没有办法要进行一些复杂的演示啊,你每次关闭重启的时候呢,其实对你资源的一个损耗也是比较严重的,对吧?好,我们已经处理完成了啊,处理完成之后呢,它就已经能够使用这个二级索引了,咱们直接来介绍二级索引呢,分为几种,首先最基础的方式呢,叫全局索引啊,全局索引呢,就是你在创建的时候,会在h base里面单独拉一张新表,这新表呢会被当做一个索引表来去使用啊,什么叫索引表呢?就你以前在查询数据的时候,你只能根据这个主件ROK,也就是这个ID来,比方说你写一个VID等于1001,它只能这样来查,那RK呢,是有序的,查的比较快,对吧?如果你想要根据后面的name等于张三来查,那不好意思,他会找的比较慢,因为张三这一列是无序的啊,没有排好序,那如果你创建2D索引呢,就是单独把张三的这一列给他拉出来,按照。
02:22
Name这一列排好张三李四王五,然后对应的在后面给他写上他的一个主见,1001 1003 1002,对吧,写好主键,写好之后呢,你再查找内等于张三的时候,他直接到二级索引表里面去读,读完之后呢,再回过头来找他的时候,可再到这边去读啊,那因为是有排序的,所以效率呢会比较高啊,这叫做二级索引啊,二级索引那你默认使用的这个全局索引呢,因为索引数据和数据表都存在不同的表里面,你每次改这个表的话呢,要改两张表,这个索引表也要改啊,所以全局索引呢,适用于多读少写的一个业务场景,写会比较慢啊,写会比较慢,因为写的时候啊,会有一个更大的一个开销,索引表也需要去写,你需要写多个表啊,同时它是在不同的节点上面啊好,那我们这里呢,就来使用一下这个全局索引啊呃,它的语法呢是create index,创建一个索引表,这是索引表的名字,Mydex on,一个表。
03:22
名,然后写上你对应的一个列啊,对应那个列,咱们直接来写叫create index my desk on student1这张表对吧,我们来复制啊,CTRLC。在这边呢,我们来粘贴诶错位置了啊。嗯,在Phoenix里面对吧,我们在使用这个连接呢,给它连回来。好,他在打印一些连接的信息啊,过一段时间之后就连进来了啊,我们先严谨一点啊,先用table来看一下,我们这个表里面呢,有一个表就叫STUDENT1对吧,然后呢,我们来粘贴,这叫创建索引表,在STUDENT1上面对吧,执行。
04:07
稍微等待一下啊,等到六秒多钟的时间,它就把这个索引表呢给创建好了,因为它是全局索引啊,这个表呢,是单独存在的啊,它会有这么一个my index表,同时呢,在h base的底层,我们这边呢,把h base的shell连接上。好,连接上之后呢,你可以用list命令来查看一下啊,这个表里面就会多一个表叫my index啊,那这个就是创建全局索引啊,创建全局索引,那这个全局索引它有什么用呢?咱们需要去测一下啊,如何测呢?你得往里面写入数据啊,我们先看一下这个格式对吧?Select from student1啊分号执行。嗯。T,啊,写错了,Student。好,先看一下这个表啊,这表呢是什么?ID name age DR对吧?你可以写一个uper upset into student e啊,VALUE6括号,然后对着来填就可以了,对吧?呃,首先呢是ID啊,那ID呢是1001啊,他要写一个字符串的话呢,你得标记一下啊,标记单引号1001。
05:19
这里面呢,不能用小键盘啊,它这个格式比较严格,1001啊好对应这边呢写name啊张三。对吧,呃,Age呢,是一个big in啊,写一个十啊。然后再逗号,然后是单引号啊,再写一个北京单引号。分号执行。好,这条数据呢,就被我们写进去了,对吧,写进去之后呢,你这边可以查得到啊,这边可以查到呢,同时这边你去查这个索引表啊,叫my index。查这个索引表呢,也能查到对应的一个索引信息,看到了吧?啊,它都是有相对应的一个关系的啊,这是我们对底层的一个影响啊,就是使用这么一个哎,全局索引啊,那这个全局索引怎么样,看它有没有效果呢?哎,那你需要去对应一下对吧,通过查看这个X盘执行计划可以来看它是否有效果啊好,那我们首先呢,要把这个表,呃,所以呢,给它删掉啊,你你已经有了,就看不出来效果了,先给它删掉啊。
06:24
删掉之后呢,我们来执行这么一个语句啊,叫select ID name from这个表where age等于十啊我们通过呢,Age等于十来看它进行一个什么样的扫描啊,粘贴过来。分号执行。可以看到你执行完这个执行,呃,运行这个执行计划之后,这里面写的很明确,叫for干全局扫描看到吧,啊,如果你没有二级索引的话,你用这种age的字段对它进行来读的话,它毫无疑问是一个全表扫描,然后这里呢,我们再把这个对应的字段啊给他。对应的二级索引呢,给它创建出来,你创建二级索引的时候,注意这里面填的这个格啊,一定要是你过滤的这个条件啊,他俩要能对应上啊,好执行。
07:12
好,等他创建完这个二级索引之后,我们再来执行这个执行计划啊,可以看到它很明显变成了RSKY,看到没有范围扫描啊,那这个呢,就是二级索引的一个作用,就像我们刚才说的,先去查A级这一列,按照顺序了啊,有顺序可以用算法直接查到,之后呢,对应找RK,找主键再去查就可以了啊,虽然多了一步,但是因为能用各种各样的算法,不用全局扫描了,效率呢反倒会更高一点啊,那这个呢,就是我们的全局索引。
我来说两句