mysql复习笔记05(小滴课堂)

mysql的慢查询日志开启与问题定位

一张数据库数据很大的表。

查询一条数据,很快就查询出来了。

根据不同的条件,查到的数据相同,但是查询所花费的时间却是不同的。

mysql复习笔记05(小滴课堂)_第1张图片

mysql复习笔记05(小滴课堂)_第2张图片

使用命令查询慢查询日志是否开启,目前它是关闭着的。

mysql复习笔记05(小滴课堂)_第3张图片

开启日志。

也可以手动设置日志文件的所在路径。

这个日志只记录慢查询的sql语句,而不是所有的sql语句。

mysql复习笔记05(小滴课堂)_第4张图片

时间单位是秒。

mysql复习笔记05(小滴课堂)_第5张图片

mysql复习笔记05(小滴课堂)_第6张图片

查看日志:

mysql复习笔记05(小滴课堂)_第7张图片

我们执行两条sql,一个大于临界时间,一个低于临界时间。

mysql复习笔记05(小滴课堂)_第8张图片

超过临界时间的sql数据会存到日志中。

这种方法会帮我们定位到具体是哪条sql语句执行的慢。

mysql的sql语句执行过程解析

我们退出下数据库,再重启一下数据库服务:

mysql复习笔记05(小滴课堂)_第9张图片

mysql复习笔记05(小滴课堂)_第10张图片

一旦服务重启,慢查询日志就会恢复到默认配置。当然一般工作中是不会太多情况去重启mysql服务的。

如果想让它永久生效,只需要修改配置文件:

mysql复习笔记05(小滴课堂)_第11张图片

增加下面三行即可。

要记住,修改了配置文件后必须要重启服务。

我们能定位到哪条语句慢了,我们还需要看看如何去解析这条语句:

mysql复习笔记05(小滴课堂)_第12张图片

我们这两条语句,一个快,一个慢。

我们就可以分别解析一下:

mysql复习笔记05(小滴课堂)_第13张图片

我们可以看到一条使用了主键索引,查询范围是1条,另一个语句没有用索引,查询范围是全部数据。我们分析到这里就能看到问题所在了。

但是如果还不能看到问题原因,就会使用到我们接下来的方法:

mysql复习笔记05(小滴课堂)_第14张图片

先查看是否开启了性能详情。

我们去开启性能:

mysql复习笔记05(小滴课堂)_第15张图片

再一次使用查询慢的语句:

mysql复习笔记05(小滴课堂)_第16张图片

mysql复习笔记05(小滴课堂)_第17张图片

mysql复习笔记05(小滴课堂)_第18张图片

mysql复习笔记05(小滴课堂)_第19张图片

可以看到这条sql语句执行每一步所耗费的时间。

性能线程的详细解释官方文档链接: 

MySQL :: MySQL 5.7 Reference Manual :: 8.14.3 General Thread States

mysql语句优化的几个小建议

mysql复习笔记05(小滴课堂)_第20张图片

mysql复习笔记05(小滴课堂)_第21张图片

条件使用or可能会使索引丢失,浪费了索引。

当字段类型转换的时候也会丢失索引。

你可能感兴趣的:(mysql,mysql)