00:00
好,那么关于呢,我们explain呢就告一段落了啊,下面的话呢,再给大家介绍两个工具啊,咱们这一章呢,都是讲这个性能分析工具的啊,集中呢在这个工具当中,所以呢非常的实用啊,那第八点的话呢,说叫分析优化器的一个执行计划啊,这里边我们提到一个叫trace追踪的一个工具,那optimer trace呢,它是MYSQL5.6呢新引入的一个功能,它呢可以追踪叫优化器做出的各种决策,比如呢,我们访问表的方法是什么呀,各种开销的计算,包括各种转换啊等等,那都可以呢记录在我们这个当中,同时的话呢,把这个结果保存在了我们的information s里边啊,这个表呢,叫做timers这两个表当中,那我们查看这个表呢,就能够查看这个信息。OK,那么默认情况下呢,我们这个追踪功能它是关闭的,我们需要呢,通过这样的一个方式呢,把它打开,那同时的话呢,我们选择这个记录的方式呢,使用的是这个杰森啊,这个杰森这样的一种格式啊,非常的这个简洁,OK,那同时的话呢,我们再去设置这样的一个参数啊叫optims max memory size,就我们设置一个最大的一个内存的一个大小啊为什么呢?因为我们这个可能是一个简单的一个呃查询语句,但是它对应的这个阶层呢,它这个就可能很长,那有可能我们这个内存中呢,就存不下,避免呢,就是最后呢,因为存不下来给我们截断了,导致我们这个信息呢展示就不完整了,所以我们把这个呢,呃,这个内存呢,设置的稍微的大一些。
01:22
诶就可以行,那这块呢,我们就做一个操作,那不妨呢,我就CTRLC一下,咱就在这个命令行这块呢去展示啊,我们首先粘过来把它跑一下,哎,然后呢,我们再回过来呢,把这个内存呢去设置一下啊,CTRLC。诶执行一下,好,这就没有问题了,对吧?好,那这个呢,都执行完以后的话呢,我们就可以呢,去写一个SQ语句了,那这里边呢,我们提到这个SQ语句啊,可以是诶增删改查啊还可以呢,是其他一些更丰富的一些语句,那它支持的还是非常的广泛的,那比如说呢,这里边我们就写一个比较简单的一个查询语句啊,针对我们这个student表呢,我写个ID小于十这样的一个操作。那我们现在呢,还是使用这个叫use一下叫at硅谷啊DB啊一是吧,这样的一个数据库啊,我们收一下这个tables,这里边呢,是不是有这个student这样个表,对吧?好,我们粘过来这个呢,就我们执行一下这样的一个结构,那执行完以后的话呢,我们就可以呢,怎么着啊,哎,去查看一下我们对应的这个计划了。
02:19
那你看这个计划的话呢,我们说这个追踪的这个信息呢,是不是就放在我们这个表当中了,我们就通过这样的一个方式啊,CTRLC,然后呢,回过来啊,在我们这个位置,诶在这个位置啊好CTRLV啊这样的一个方式呢,我们去做一个执行。啊,这就出来了,好,出来以后的话呢,我们往上翻呢,这个整个结构呢,就比较长一些啊,比较长一些,那整体来讲的话呢,它其实呢,分成了四个部分啊,我就不在这儿看了,我把这个呢,其实之前已经运行过啊,我把它的CTRLC粘完以后呢,就放在我们这个课件里边了,整体来讲的话呢,我们这个trace的话呢,分成四个部分,第一个部分的话呢,就是我们查询的这样的一个SQL语句。啊,这是第一个部分,第二部分的话呢,也是我们最核心的一个部分,就是我们追踪的这个相关的信息啊,相关的这个信息,然后第三个部分的话呢,就是在这个最后。
03:07
啊很长,在最后这块呢,叫missing,这就我们所说的,那有可能我们这个信息过多呢,导致这个字节不足啊我们这个数据呢,可能就显示不全了,就截断了,那咱们这块呢是显示全了,所以这这个不足的这个呢就是零。追踪音过长的时候呢,被截断的一个字节的一个数量是吧,那么第四个部分的话呢,这个叫insufficient privilege啊,就是不充分的权限,相当于呢,我们在执行上边这个trace的时候呢,你这个权限呢,看够不够,如果呢,要权限不够的话呢,这个值呢,就是一,那对应的我们上面这个第二部分这个trace呢,它就是空了。啊,这个咱们这块呢,相当于是有这个权限对吧,一般呢,我们是在执行这一叫安全的一个定义的,这样的视图或者存储过程的时候呢,可能会出现这样的问题。好,这一共呢,是我们这四个部分,最核心的话呢,这就是我们的第二个部分,就是咱们这个叫trace的这个部分,对吧,那这里边儿的话呢,主要有哪些点呢?我大体上呢,简单写了一下这个注释信息,比如我们这呢,叫一个预备的工作是吧,这个呢,是我们进行一个优化,进行这个条件的一个呃,处理的进程。
04:11
然后还有呢,就是我们这个呢,呃,叫替换生成的这个对应的列啊表的这种这个依赖关系啊,Depends是吧。啊,还有呢,我们使用对应的这些键啊,进行这个行的判断啊,扫描表啊,这个潜在的这个啊,潜在这个范围索引是吧。好,然后呢,设置这个呃范围内这条条件啊等等这块呢,我就不具体的展开去分析了啊,就是这块呢,给大家抛出来啊,可以呢,大家下来呢,有兴趣的话呢,你可以呃展示一下啊,去演示一下我们这个关于tra的一个使用啊啊这呢是我们关于这个,然后下个呢,叫做MYSQ的一个监控分析视图啊这呢提到我们这个这样的一个数据库啊,数据库下的相关的一些这个表结构啊呃,我们一般的话呢,要实现对MY性能那个监控和问题的整断呢,我们有这个叫performance STEM。
05:02
啊,包括我们这个叫information STEM是吧,我们从这样的数据库当中去获取数据啊,但是呢,我们为了呢,现在呢,更加的方便啊,咱们就提供了一个叫的一个S,他把呢我们这两个数据库的数据啊,以更容易的方式呢去总结去呈现啊,降低了我们去查询STEM的这个复杂度,那让D呢能够更方便的去定位问题。啊,这里边儿呢,就涉及到我们这个数据库下的相关的一些这个视图啊,有这个开头的,这个开头的,其实这块就很多了,诶然后下边呢,我给大家罗列出来一些具体的使用的一些场景,诶大家呢,直接调一下其实就可以了啊,不用刻意的去死记硬背啊,直接你调就行,那举个例子,比如说呢,跟这个索引情况相关的,我们把它呢,直接CTRLC。来回过来,我们回到咱们这个色Q要当中啊,粘过来呢,方便的去演示啊。好啊,针对我们比如说艾特硅谷DB1这样的一个数据库啊,其实这块你选哪个也无所谓了哈,为啥呢?因为我这里边呢,记住这个数据库呢,是整个呢,我们在操作的过程当中,你可能不是这个数据库,也可能是这个数据库,总之呢,这些数据库的操作信息都会记录在我们这个系统的数据库当中啊,这个叫C的这个数据库,对吧。
06:08
好,那么我们这时候呢,去查询一下,这个叫冗余的一个缩引啊,这个redundant啊,就冗余的一个意思来选中以后呢,一直行,那我们呢,就列举出来了,咱们相关的一些数据库当中,你看有爱DB的,有爱QDB的相关的一些数据库当中,冗余的一些索引都有哪些。在这里边呢,大家会看到,诶怎么叫冗余呢?比如我们以这个为例吧,爱硅谷DB一下的student info里边有一个这个,所以呢,它是冗余的,诶为什么叫冗余了呢?来咱们看一下啊,咱们可以呢叫受。啊,受这个index from一下,我们叫student info,对吧,咱们查看一下这个表中的这个索引都有哪些啊,走起。好,大家看我们这个表当中呢,咱们定了一个单列的索引,是不是就是叫呃,Create time是吧,同时的话呢,我们又定了一个叫联合的索引啊,这个联合索引的话呢,咱们也是create作为第一个字段,作为第二字,那很显然话呢,我们这个里边的呃,这个索引呢,也是以开头的,就没有必要呢,我们是不是再定义这个单列的这个索引了。
07:11
那我们呢,凡是你用到这个,呃,单列索引的地方,我们是不是都可以使用这个联合索引呢去替换呀,哎,那我们这呢,确实是存在一个冗余,哎,你看我们通过这样的一个指令呢,是不是就能够查看出来我们这个冗余的这个索引都有哪些啊,多余的我们就没有必要去造了。诶下边呢,是查询我们未使用过的这个索引,那我们定义一个表中呢,很多索引呢,那么经过一段时间之后呢,我们发现呢,某些表中索引呢,根本就没有用过,那此时的话呢,你就可以保证可以考虑呢,是把这些索引呢也给它删掉吧。哎,这就是这个例子啊,第三个我就不演示了,咱们挑着来说一下,下面呢,跟这个表相关的,来我们CTRLC一下粘过来。啊,这个我们就直接放在这了。啊一下啊这么着啊,第一个呢,叫查询表的一个访问量,哎,我们把它呢,选中以后呢,做一个执行。那么针对于我们相关的数据库里边的哪个表,诶这个IO了多少次,那这就这个访问量的一个情况。
08:05
那那越往上的话呢,这个表呢,相当于我们访问的就越频繁一些,那你可以考虑呢,是不是把它放在相关的这个缓存当中,对吧,那下一个的话呢,就是占用我们这个buffer铺呢,这个比较多的这个表都有哪些。啊,多的这个表你看跟我们这个访问量多的和我们这个八号库呢,这个占用比较多的,这个你看是不是匹配啊,是不是匹配,这是相关的数据库的相关的这个,呃,这个对象啊,他这块呢,占用的这个多少啊这个情况。好啊,这个呢,我们就过了,然后接着我们再看下边啊,跟这个语句相关的啊,这样的一些情况啊,CTRLC。啊,粘过来。哎,放到这儿。啊,比如说监控我们这个售后的执行的一个频率啊,我们选中了做个执行。哎,Circleq执行的一个频率啊,这呢,我们相关的语句的执行的频率这个高低的一个情况啊,监控使用了这个排序的这个circle,监控使用的这个临时表的,或者是这个磁盘临表的这个circle啊等等这样的一些这个功能呢,它都有。
09:00
啊,都有啊,还有下面呢,跟IO相关的啊,查看一下我们消耗磁盘的IO的文件啊行所,呃,行所的一个阻塞的一个情况,呃,这个呢,我们在开发中呢,也可以呢,呃,这个如果呢,你发现我们整个这个执行的话呢,相当于是卡顿了,呃你看是不是存在这种行锁的这种情况啊,在我们这里边呢,是没有了。行,那这呢,就相当于能看到呢,咱们这个CSSTEM这个数据库当中啊,给我们提供的这些工具呢,还是非常好用的啊,非常好用的,但是这块呢,对应的我们也要注意一个问题,就是如果我们在实际生产环境当中啊,呃,你要频繁的去执行这样的一些试图的话呢,会导致我们消耗大量的这个系统资源去收集这些信息,对吧,严重的话呢,可能导致我们这个业务的相关的这个进程的话呢,被阻塞,所以大家呢,在实际生产环境当中,不要频繁的去做调用啊就可以了。好,那么整个呢,咱们这一章呢,就给大家讲到这儿啊,应该说呢,我们谈到了很多的这个工具啊,包括一些系统参数,这个呢,都是小工具了啊整体上来讲的话呢,我们比如说定位这个查询呢,慢查询日志,然后通过这个收呢进行分析,通过进行分析,还有我们这个呢,去进行跟踪啊,还包括呢,整体性的我们使用这个STEM下边的相关的这个语句啊,进行我们必要的一些检索等等啊这些工具呢,大家在实际生产环境当中啊,要学会呢灵活去运用。
10:17
啊,那么整个这一章的话呢,应该说呢,还是比较有价值的。
我来说两句