3步抓出慢SQL,别等半夜被叫醒😴

我是小耶,干运营半路出家的野生DBA------写功课只是为了我踩过的坑,你们别再踩了!

你们遇到过这种情况吗?业务反馈页面转圈,登录数据库一看,CPU 100%。但不知道是哪个SQL干的。

这时候别慌,三条命令依次用。

1. 先看当前在跑的查询

sql

ini 复制代码
SHOW PROCESSLIST;

结果里找Command列为QueryTime列数值大的那些。Time表示执行了多少秒,越大越可疑。拿到Id,可以直接KILL <id>

2. 打开慢查询日志(提前做)

MySQL设置:

text

ini 复制代码
slow_query_log = ON
long_query_time = 2
slow_query_log_file = /var/log/mysql/slow.log

超过2秒的SQL会被记录。每天上班第一件事:看一眼昨天的慢查询日志,别等用户投诉。

bash

c 复制代码
mysqldumpslow -s t /var/log/mysql/slow.log

-s t按时间排序,最慢的排前面。

3. 抓到慢SQL后,用EXPLAIN分析

sql

ini 复制代码
EXPLAIN SELECT ...;

重点看三列:

  • typeALL是全表扫描(危险),refrange是走索引(还行),const是最优
  • rows:预估扫描的行数,越大越慢
  • Extra:出现Using filesortUsing temporary,说明有排序或临时表,通常需要优化

顺手记一个组合拳

sql

ini 复制代码
EXPLAIN FORMAT=JSON SELECT ...;

输出JSON格式,能看到更详细的成本估算。适合出事故后写复盘报告用。

小耶在手,SQL不愁。

你今天慢查询日志里抓到最慢的SQL跑了多少秒?

相关推荐
dfdfadffa1 小时前
SQL窗口函数如何优化嵌套子查询_提升执行效率
jvm·数据库·python
m0_588758482 小时前
如何查看集群版本_crsctl query crs activeversion当前版本
jvm·数据库·python
摇滚侠2 小时前
Oracle19c 导出 Oracle11g 导入,Oracle19c 导出导入,Oracle11g 导出导入
java·数据库·oracle
zh1570232 小时前
CSS如何让元素出现时带抖动_利用关键帧定义抖动动画
jvm·数据库·python
薛定谔的悦2 小时前
共享数据总线(DPR)设计模式——嵌入式系统的“内存数据库”
jvm·数据库·设计模式
程序猿online2 小时前
本地mysql密码重置
数据库·mysql
四维迁跃2 小时前
如何排查SQL存储过程死锁_分析死锁日志与索引优化
jvm·数据库·python
m0_741173332 小时前
如何检测SQL注入风险_利用模糊测试技术发现漏洞
jvm·数据库·python
2401_846339563 小时前
CSS如何解决Less与CSS兼容性问题_通过配置文件实现平滑过渡与混合开发
jvm·数据库·python