使用 Explain 进行分析
Explain 用来分析 SELECT 查询语句,开发人员可以通过分析 Explain 结果来优化查询语句。
开启慢 SQL 记录
slow_query_log=on
long_query_time=1
slow_query_log_file=/path/to/log
比较重要的字段有:
select_type : 查询类型,有简单查询、联合查询、子查询等
key : 使用的索引
rows : 扫描的行数
避免全表扫描
避免大事务操作,提高系统并发能力
解除正在死锁的状态有两种方法:
第一种:
查询是否锁表
show OPEN TABLES where In_use > 0;
查询进程(如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程)
show processlist
杀死进程id(就是上面命令的id列)
kill id
第二种:
查看当前的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
查看当前锁定的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
查看当前等锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;