MySQL是大型架构核心,下面我详解MySQL线上命令@mikechen
一、查看MySQL版本
SELECT VERSION();
或
mysql -V
应用场景
升级前检查版本;
排查兼容性问题;
确认是否支持某些新特性。
二、查看当前连接数
SHOW STATUS LIKE 'Threads_connected';
查看最大连接数
SHOW VARIABLES LIKE 'max_connections';
应用场景
排查:
Too many connections
问题。
三、查看所有连接
SHOW PROCESSLIST;
查看完整SQL:
SHOW FULL PROCESSLIST;
输出示例
Id User Host DB Command Time State
12 root localhost test Query 20 Sending data
应用场景
排查:
- 慢SQL;
- 锁等待;
- 长事务;
- 死锁;
四、杀死异常连接
KILL 12345;
示例
KILL 1024;
应用场景
当某条SQL执行过久:
Waiting for lock
Locked
Copying to tmp table
可直接终止。
五、查看数据库运行状态
命令
SHOW GLOBAL STATUS;
查看指定指标:
SHOW GLOBAL STATUS LIKE 'Questions';
SHOW GLOBAL STATUS LIKE 'Uptime';
常用指标
| 指标 | 说明 |
|---|---|
| Questions | 总查询数 |
| Connections | 总连接数 |
| Uptime | 运行时间 |
| Slow_queries | 慢SQL数量 |
六、查看MySQL配置参数
SHOW VARIABLES;
查看指定配置:
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW VARIABLES LIKE 'max_connections';
应用场景
检查:
- 缓冲池大小;
- 连接数限制;
- 字符集配置;
七、查看锁等待情况
MySQL 8
SELECT * FROM performance_schema.data_locks;
SELECT * FROM performance_schema.data_lock_waits;
MySQL 5.7
SHOW ENGINE INNODB STATUS\G
应用场景
排查:
Lock wait timeout exceeded
问题。
八、查看慢查询
应用场景:定位性能瓶颈SQL。
SHOW VARIABLES LIKE 'slow_query_log';
查看阈值
SHOW VARIABLES LIKE 'long_query_time';
查看日志位置
SHOW VARIABLES LIKE 'slow_query_log_file';
九、查看表大小
SELECT
table_name,
ROUND(data_length/1024/1024,2) AS data_mb,
ROUND(index_length/1024/1024,2) AS index_mb
FROM information_schema.tables
WHERE table_schema='your_db';
应用场景
排查:
- 磁盘占用;
- 大表问题;
- 分库分表需求;
十、查看索引情
SHOW INDEX FROM user;
应用场景
检查:
- 索引是否存在;
- 索引是否生效;
- 重复索引;
十一、分析SQL执行计
应用场景:性能优化必备。
EXPLAIN
SELECT *
FROM user
WHERE id=1;
MySQL 8:
EXPLAIN ANALYZE
SELECT *
FROM user
WHERE id=1;
核心关注
type
rows
possible_keys
key
Extra
十二、查看主从复制状态
主库
SHOW MASTER STATUS;
从库
SHOW REPLICA STATUS\G
MySQL 5.7:
SHOW SLAVE STATUS\G
核心指标
Replica_IO_Running
Replica_SQL_Running
Seconds_Behind_Source
正常情况:
Yes Yes 0