mysql 谁锁了表所锁_找出mysql 中谁持有表锁

当MySQL数据库中出现多个进程被锁定时,可能是因为MyISAM引擎在处理高并发工作负载。要识别哪些连接长时间持有锁,可以通过运行$mysqladmin debug命令将锁信息输出到错误日志。在my.cnf配置文件中设置log-error参数,然后查看错误日志,如/var/log/mysqld.log,以获取关于锁的详细信息。这将显示持有锁和等待锁的线程信息,帮助诊断锁问题。
摘要由CSDN通过智能技术生成

如果看到有许多进程都处于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

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

8                  sakila.film                                Waiting - write         Highest priority write lock

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值