在工作中,我们发现慢查询一般有2个途径,一个是被动的,一个是主动的。被动的是当业务人员反馈某个查询界面响应的时间特别长,你才去处理。主动的是通过通过分析慢查询日志来主动发现执行效率缓慢的 sql 语句,或者通过 information_schema.processlist 实时查询执行缓慢的 sql。
1
分析慢查询日志
1、分析慢查询日志的步骤
1、通过命令查看数据库是否开启慢查询日志:
show variables like 'slow_query_log';
复制
2、设置开启慢查询日志:
set global slow_query_log=on;
复制
3、没有命中索引的查询记入慢查询日志:
set global log_queries_not_using_indexes = on;
复制
4、sql 语句超过多少秒记入慢查询日志:
set global long_query_time=1;
复制
5、查看慢查询日志保存为准:
show variables like 'slow_query_log_file';
复制
6、直接打开日志进行查看:
vi + file路径
复制
7、慢查询日志工具:
mysqldumpslow -s at -t 15 file路径
复制
2、慢查询日志参数介绍
Time:日志记录时间
User@Host:执行的用户与主机
Query time:查询耗费时间
Lock time:锁表时间
Rows_sent:返回的结果行数
Rows_examined:扫描的记录行数
Set timestamp:sql 语句执行的时间,sql 语句表示执行的具体语句。
3、分析 information_schema.processlist
SELECT id,user,host,DB,command,time,state,info
FROM information_schema.processlist
WHERE TIME>=30;
复制
查询当前服务器执行超过 30 秒的 sql,可以通过定时任务周期性的来执行这个 sql,就能找到查询缓慢的 sql 语句。
通过以上两种方式找出查询较慢的 sql,进行优化即可。
2
MySQL 常用调优策略
MySQL调优策略详见下图:
MySQL 数据库十二个应知应会知识点全部结束。
文章转载自追梦Java,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
MySQL8.0统计信息总结
闫建(Rock Yan)
554次阅读
2025-03-17 16:04:03
MySQL生产实战优化(利用Index skip scan优化性能提升257倍)
chengang
374次阅读
2025-03-17 10:36:40
MySQL数据库当前和历史事务分析
听见风的声音
349次阅读
2025-04-01 08:47:17
墨天轮个人数说知识点合集
JiekeXu
328次阅读
2025-04-01 15:56:03
MySQL 生产实践-Update 二级索引导致的性能问题排查
chengang
319次阅读
2025-03-28 16:28:31
Oracle SQL 执行计划分析与优化指南
Digital Observer
284次阅读
2025-04-01 11:08:44
MySQL8.0直方图功能简介
Rock Yan
260次阅读
2025-03-21 15:30:53
MySQL 有没有类似 Oracle 的索引监控功能?
JiekeXu
242次阅读
2025-03-19 23:43:22
云和恩墨杨明翰:安全生产系列之MySQL高危操作
墨天轮编辑部
238次阅读
2025-03-27 16:45:26
openHalo问世,全球首款基于PostgreSQL兼容MySQL协议的国产开源数据库
严少安
226次阅读
2025-04-07 12:14:29