概述
一、查看sql执行计划
explain + sql 语句—>查看 执行计划
比较全的博客连接(供参考):
https://www.cnblogs.com/klvchen/p/10137117.html
示例:EXPLAIN SELECT * FROM user WHERE nid = 3;
结果示例:
二、查询进程列表
show processlist 语句—>显示进程列表
比较全的博客连接(供参考):
https://zhuanlan.zhihu.com/p/30743094
示例:
-- 跳转到 information_schema 数据库
USE information_schema;
-- 显示进程列表
SHOW PROCESSLIST;
或者
SELECT * FROM information_schema.`PROCESSLIST` WHERE info IS NOT NULL;
结果示例:
三、查看数据库配置的最大连接数
show VARIABLES like ‘max_connections’–>查看数据库配置的最大连接数
示例:
show VARIABLES like 'max_connections';
结果示例:
四、查看当前运行的所有事务
select * from information_schema.INNODB_TRX —>查看当前运行的所有事务
比较全的博客连接(包含各种事物):
https://www.cnblogs.com/jasonboren/p/13803948.html
示例:
select * from information_schema.INNODB_TRX
结果示例:
在执行结果中可以看到是否有表锁等待或者死锁,如果有死锁发生,可以通过下面的命令来杀掉当前运行的事务:
KILL 165667 ; KILL 后面的数字指的是 trx_mysql_thread_id 值。
五、 查询当前锁性能状态
SHOW STATUS LIKE ‘innodb_row_lock_%’—>查询当前锁性能状态
示例:
SHOW STATUS LIKE 'innodb_row_lock_%';
结果示例:
解释如下:
Innodb_row_lock_current_waits:当前等待锁的数量
Innodb_row_lock_time:系统启动到现在、锁定的总时间长度
Innodb_row_lock_time_avg:每次平均锁定的时间
Innodb_row_lock_time_max:最长一次锁定时间
Innodb_row_lock_waits:系统启动到现在、总共锁定次数
六、 查询死锁
示例:
SELECT b.trx_state, e.state, e.time, d.state AS block_state, d.time AS block_time
, a.requesting_trx_id, a.requested_lock_id, b.trx_query, b.trx_mysql_thread_id, a.blocking_trx_id
, a.blocking_lock_id, c.trx_query AS block_trx_query, c.trx_mysql_thread_id AS block_trx_mysql_tread_id
FROM information_schema.INNODB_LOCK_WAITS a
LEFT JOIN information_schema.INNODB_TRX b ON a.requesting_trx_id = b.trx_id
LEFT JOIN information_schema.INNODB_TRX c ON a.blocking_trx_id = c.trx_id
LEFT JOIN information_schema.PROCESSLIST d ON c.trx_mysql_thread_id = d.id
LEFT JOIN information_schema.PROCESSLIST e ON b.trx_mysql_thread_id = e.id
ORDER BY a.requesting_trx_id;
慢sql:
https://blog.csdn.net/jy02268879/article/details/108753273
最后
以上就是心灵美咖啡豆为你收集整理的mysql问题排查的各种命令的全部内容,希望文章能够帮你解决mysql问题排查的各种命令所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复