msyql查看表死锁、进程情况及杀掉进程

前言

mysql 常常会锁表,查询慢等现象,我们如何知道是哪些表被锁了,有哪慢查询呢?然后杀掉对应的进程或优化相应的查询。接下来我们就来一起学习学习。

查询方法

一、查看是否有锁表

show OPEN TABLES where In_use > 0;

二、 mysql查询死锁的表
方法一

在MySQL中,可以通过查询information_schema库中的INNODB_LOCKS和INNODB_LOCK_WAITS表来查看当前发生的死锁信息。以下是一个查询死锁的表的示例SQL语句:

SELECT 
    r.trx_id waiting_trx_id,
    r.trx_mysql_thread_id waiting_thread,
    r.trx_query waiting_query,
    b.trx_id blocking_trx_id,
    b.trx_mysql_thread_id blocking_thread,
    b.trx_query blocking_query
FROM
    information_schema.innodb_lock_waits w
        INNER JOIN information_schema.innodb_trx b ON
            b.trx_id = w.blocking_trx_id
        INNER JOIN information_schema.innodb_trx r ON
            r.trx_id = w.requesting_trx_id;

这个查询将返回当前等待的事务(waiting_trx)和阻塞它的事务(blocking_trx)的详细信息,包括它们的ID、线程ID和正在执行的查询。这些信息可以帮助你识别和解决死锁问题。

方法二

SELECT * FROM information_schema.INNODB_TRX;

方法三:
查看正在锁的事务:

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;

查看等待锁的事务:

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;

查询进程

SHOW PROCESSLIST;

在这里插入图片描述

杀掉进程

有些进程是不能杀掉的,否则会产生很多脏数据或业务上有错误,但查询的进程是可以直接杀掉的,命令如下:

kill trx_mysql_thread_id;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值