找出mysql 中谁持有表锁

如果看到有许多进程都处于Locked状态,可能是MyISAM用于高并发的工作负载上了。如何找出

有哪几个连接长时间地持有着某个锁呢?


没有SQL命令可以用来显示那些持有着表锁从而阻塞了你查询的线程,使用SHOW PROCESSLIST,可以看到

在等待锁的进程,但是看不到持有着锁的进程。

以下命令能将锁的信息打印到服务器的错误日志里.

$ mysqladmin debug

找出mysql配置文件的位置

whereis my.cnf

找到mysql错误日志的位置

cat /etc/my.cnf
--->
[mysqld_safe]
log-error=/var/log/mysqld.log


在错误日志中输出大量的调试信息,在接近末尾的地方,可以看到类似下面的信息:


Thread        database.table_name          Locked/Waiting        Lock_type

7                  sakila.film                                Locked - read           Read lock without concurrent inserts

8                  sakila.film                                Waiting - write         Highest priority write lock

此时,你能看到8正在等待着线程7持有的锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值