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

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

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

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

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

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

开启日志。

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

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

时间单位是秒。

查看日志:

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

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

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

mysql的sql语句执行过程解析

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

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

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

增加下面三行即可。

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

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

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

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

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

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

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

我们去开启性能:

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

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

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

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

mysql语句优化的几个小建议

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

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

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-21 23:06:07       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-21 23:06:07       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-21 23:06:07       87 阅读
  4. Python语言-面向对象

    2023-12-21 23:06:07       96 阅读

热门阅读

  1. conda 虚拟环境使用

    2023-12-21 23:06:07       61 阅读
  2. c++刷题leetcode常见报错(持续更新)

    2023-12-21 23:06:07       66 阅读
  3. 晶振选型参考

    2023-12-21 23:06:07       58 阅读
  4. 5-Docker实例-nginx application

    2023-12-21 23:06:07       54 阅读
  5. Linux | 数据结构之内核链表

    2023-12-21 23:06:07       69 阅读
  6. C语言初学6:判断

    2023-12-21 23:06:07       59 阅读
  7. 网站访问量指标

    2023-12-21 23:06:07       55 阅读
  8. C语言求回文数(详解版)

    2023-12-21 23:06:07       60 阅读
  9. C语言三个数从小到大排序/输出

    2023-12-21 23:06:07       49 阅读
  10. netstat命令检查端口是否监听

    2023-12-21 23:06:07       57 阅读
  11. IEEE双栏摘要排版

    2023-12-21 23:06:07       56 阅读
  12. CCF编程能力等级认证GESP—C++5级—20230923

    2023-12-21 23:06:07       87 阅读
  13. 阿里lindorm与MyBatis Plus集成

    2023-12-21 23:06:07       63 阅读