mysql问题排查的各种命令

7 篇文章 0 订阅
3 篇文章 0 订阅

一、查看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

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值