目录
一、介绍
记录一次线上排错,主要表现是用户使用卡顿,CPU爆高。废话少说,直接上干货
二、常用命令和作用
1. 查看当前执行的SQL。
SHOW FULL PROCESSLIST
结果如下:
查询结果主要有用户(user)、请求的ip和地址(host)、目标数据库(db)、状态【等待/执行中】、执行时长(time)、执行SQL(info)。
2. 查询正在执行的事务
SELECT * FROM information_schema.INNODB_TRX;
结果如下:
这个用的比较多,找了一个比较详细的说明
杀掉事务
KILL [trx_mysql_thread_id]
3. 慢SQL相关
1. 查看当前是否开启慢SQL(慢SQL开启或者关闭在my.cnf中,后续会单独写一篇文章)
SHOW VARIABLES LIKE 'slow_query%';
2. 查看当前慢SQL时间阈值
show VARIABLES LIKE '%long_query_time%'
3. 查看慢SQL次数
show global status like '%slow%';
4. 查看当前慢SQL保存方式
show VARIABLES like '%log_output%'
5. 更改慢SQL保存方式(文件-FILE、表-TABLE、不保存-NONE)
SET GLOBAL log_output='TABLE';
4. 查看保存下来的慢SQL记录(这里列举table新式)
SELECT * from mysql.slow_log
4.连接数相关
1. 查看最大的连接数
SHOW VARIABLES LIKE "max_connections";
2. 查看已使用的连接数
SHOW GLOBAL STATUS LIKE 'max_used_connections';
3. 显示当前正在使用的连接信息,包括连接的账号、IP、以及执行的sql、连接状态等
SHOW PROCESSLIST;
4. 优化建议
自己测试下来比较理想的公式是
max_used_connections / max_connections * 100% ≈ 80%
当发现这一比例在10%以下的话,说明最大连接数设置的过高了