☰
MySQL 慢查询日志开启与 SQL 优化实战(宝塔环境)
2026/10/29 11:13:20 网站建设 项目流程
# MySQL慢查询日志开启与SQL优化实战(宝塔环境)网站访问卡顿、接口响应超时,很多时候根源在数据库慢SQL。宝塔环境下MySQL慢查询是日常运维高频排查项,下面整理一套实操流程。## 一、开启慢查询日志进入宝塔数据库配置,找到my.cnf,在[mysqld]段添加配置: ```ini slow_query_log=1slow_query_log_file=/www/server/mysql/log/slow.log long_query_time=2log_queries_not_using_indexes=0

参数说明:

  • slow_query_log=1:开启慢查询
  • long_query_time=2:执行超过 2 秒的 SQL 记录日志
  • log_queries_not_using_indexes:关闭则不记录没有走索引的 SQL,避免日志爆炸

修改完成后重启 MySQL 服务生效。

二、查看实时慢 SQL

查看当前正在执行的 SQL:

show processlist;

如果看到大量 Sleep 或者 Query 状态长时间停留,就是数据库阻塞了。
分析慢日志自带工具:

mysqldumpslow-st /www/server/mysql/log/slow.log

-s t 代表按照执行时间排序,优先看耗时最高的语句。

三、用 EXPLAIN 分析 SQL 执行计划

拿到慢 SQL 之后,前面加上 EXPLAIN 查看执行计划:

EXPLAIN SELECT * FROMtestWHEREid=1;

重点看 type 字段:

  • ref、range 属于正常;
  • ALL 代表全表扫描,是最需要优化的,一般是缺少索引。
    key 字段显示当前 SQL 实际命中的索引。

四、索引失效常见坑

  1. where 条件字段做函数运算;
  2. 隐式类型转换,字符串和数字对比;
  3. 使用 or 连接没有同时加索引;
  4. 模糊查询 % 放在前面,无法走索引。

五、简单优化思路

  1. 给查询条件字段建立合适索引;
  2. 不要 select *,只查询需要的字段;
  3. 大表分页避免 limit 超大偏移;
  4. 频繁查询的数据放入 Redis 缓存,减少数据库压力。

小结

数据库慢排查顺序:

  1. show processlist 看实时阻塞
  2. 开启慢查询日志捕获慢 SQL
  3. explain 分析执行计划
  4. 补索引、改写 SQL、增加缓存

参考资料

  • 文档记录:lxmrj.com

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询