宝塔面板数据库查询缓慢_利用慢查询日志定位SQL问题

雨雪大大_6795

雨雪大大_6795

2026-03-28

277人浏览

原创

宝塔默认关闭MySQL慢查询日志,需手动开启slow_query_log=ON并设置long_query_time(生产建议1秒),重启MySQL后日志路径为/www/server/data/mysql-slow.log;Query_time不包含锁等待等耗时,应结合Lock_time、Rows_examined及SHOW PROCESSLIST分析;日志为空需检查磁盘、权限与错误日志;EXPLAIN中type=ALL、key=NULL、Using filesort或Using temporary是性能瓶颈关键指标。

宝塔面板数据库查询缓慢_利用慢查询日志定位sql问题

慢查询日志没开启,查不到问题SQL

宝塔默认关闭 MySQL 慢查询日志,不手动开,slow_query_log 就一直是 OFF,你再怎么刷页面都看不到慢 SQL。

实操建议:

  • 进宝塔 → 数据库 → 选择对应 MySQL 实例 → 点「配置修改」→ 找到 slow_query_log = OFF,改成 ON
  • 同时确认 long_query_time 值,生产环境建议设为 1(秒),太低会写爆磁盘;开发可设 0.1 捕获更多可疑语句
  • 必须重启 MySQL 生效:在宝塔里点「重启」,或执行 systemctl restart mysqld
  • 日志路径通常为 /www/server/data/mysql-slow.log,权限要确保 MySQL 进程能写入(常见坑:日志目录属主不是 mysql)

日志里全是“Query_time: 0.000xxx”,实际却卡

这是 MySQL 5.7+ 的常见现象:如果 SQL 走了锁等待、IO 等待或网络延迟,Query_time 只计执行时间,不包含排队和等待耗时,看起来快,但用户感知明显卡顿。

实操建议:

  • 别只盯 Query_time,重点看 Lock_time 和 Rows_examined —— 锁太久或扫太多行,基本就是问题源头
  • 搭配 SHOW PROCESSLIST 实时抓活的长事务:SELECT * FROM information_schema.PROCESSLIST WHERE TIME > 60
  • 检查是否用了 SELECT * 或未加 WHERE 条件的更新/删除,这类语句在慢日志里可能 Query_time 很小,但 Rows_examined 高达几万

开了慢日志但日志文件空,或者只写了几条就停了

常见原因是磁盘满、权限不足,或 MySQL 自动关闭了日志(比如检测到写失败后静默降级)。

实操建议:

  • 先用 ls -lh /www/server/data/mysql-slow.log 看文件是否存在、大小是否为 0
  • 查 MySQL 错误日志:tail -n 50 /www/server/data/*.err,搜关键词 slow log 或 Could not write
  • 确认磁盘空间:df -h /www,尤其注意 /www/server/data 所在分区
  • 检查日志目录权限:ls -ld /www/server/data,确保属主是 mysql:mysql;如果不是,运行 chown mysql:mysql /www/server/data

定位到慢 SQL 后,EXPLAIN 结果看不懂关键字段

EXPLAIN 输出里 type 是 ALL、rows 过大、key 为 NULL,基本等于没走索引。但新手常忽略 Extra 里的 Using filesort 或 Using temporary —— 这俩才是真正拖垮性能的隐形杀手。

实操建议:

  • type = ALL 或 index:说明全表扫描,优先加复合索引,顺序按 WHERE 条件列 + ORDER BY 列排列
  • Extra 出现 Using filesort:避免在 ORDER BY 字段上用函数,如 ORDER BY DATE(created_at);改用范围查询或冗余排序字段
  • Extra 出现 Using temporary:通常是 GROUP BY 或 DISTINCT 配合非索引字段,考虑加覆盖索引,或拆成两步查
  • 别信 rows 估算值,用 SELECT COUNT(*) 对比真实数据量,偏差大说明统计信息过期,运行 ANALYZE TABLE table_name

慢查询不是单点问题,而是索引设计、查询写法、服务器配置、甚至应用层重试逻辑共同作用的结果。最常被忽略的是:没确认慢 SQL 是否真被业务代码调用,还是测试残留 SQL 在后台轮询。先确认调用链,再优化,否则容易白忙。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
常用的mysql管理工具
常用的mysql管理工具

常用的mysql管理工具有:1、MySQL Workbench、phpMyAdmin、MySQL Shell、Navicat、DBeaver和DataGrip。更多关于mysql管理工具的问题,详情请看本专题下面的文章,php中文网欢迎大家前来学习。

2023.11.03

6150

11

phpmyadmin导入sql文件失败怎么办
phpmyadmin导入sql文件失败怎么办

在phpmyadmin导入sql文件失败时,可以尝试以下解决方案:1、检查文件权限和格式;2、确保文件字符集与数据库兼容;3、确认表结构兼容;4、检查外键约束和禁用外键检查;5、增加最大上传文件大小;6、分批导入或使用命令行导入;7、联系托管提供商寻求帮助。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.02

3884

7

phpmyadmin怎么改成中文
phpmyadmin怎么改成中文

通过安装中文语言包、将其上传到 phpmyadmin 目录、修改配置文件和重启 phpmyadmin,可以将 phpmyadmin 的界面改为中文。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

841

5

phpmyadmin访问不了怎么回事
phpmyadmin访问不了怎么回事

phpmyadmin 无法访问可能是以下原因造成:1、服务器问题:mysql 服务未运行或防火墙阻止访问;2、配置问题:安装/配置错误、错误的配置文件设置或缺少必要的 php 扩展;3、浏览器问题:浏览器缓存、扩展干扰或浏览器不兼容;4、其他原因:dns 问题、恶意软件或网络连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.07

959

6

phpMyAdmin安装教程大全
phpMyAdmin安装教程大全

本专题整合了phpMyAdmin程序安装相关教程,阅读专题下面的文章了解更多详细内容。

2025.10.31

945

23

PHPMyadmin配置
PHPMyadmin配置

本专题整合了phpmyadmin配置相关教程,阅读专题下面的文章了解更多详细步骤。

2025.12.04

569

19

XAMPP 与 phpMyAdmin 数据库管理实操
XAMPP 与 phpMyAdmin 数据库管理实操

专注于 XAMPP 内置的 phpMyAdmin 数据库管理工具,系统讲解数据库和数据表的创建与设计、SQL 语句执行、CSV/SQL 格式数据的导入导出、定时备份与一键还原、多数据库批量管理等日常操作,帮助开发者高效管理本地 MySQL 数据。

2026.04.08

355

26

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

20

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

20

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习