mysql insert 没反应_MySQL中insert语句没有响应的问题分析(r11笔记第21天)

本文讲述了在MySQL中遇到插入语句长时间无响应的问题,通过检查磁盘空间、线程状态和存储引擎,发现是由于mysqldump备份操作使用了--lock-all-tables选项导致的全局锁。解决方案是改用--single-transaction选项以减少对数据库的影响,或者在适当时候kill掉阻塞的备份进程。
摘要由CSDN通过智能技术生成

今天开发的一个同学问我一个MySQL的问题,说在测试数据库中执行一条Insert语句之后很久没有响应。我一看语句是一个很常规的insert into xxx values形式的语句。看起来有些不太合乎常理啊,我对这类问题立马来了兴趣,准备好好看看到底是什么原因。

向开发同学了解了环境之后,我登录到服务端,首先查看是否可能是磁盘空间不足导致的问题。结果df -h的结果显示,空间还绰绰有余。

使用show proceslist查看线程情况。

a59610f978cf447db2aa6bec97991a6e.png

可以看到大量的线程是Waiting for table level lock ,开发同学提交的SQL语句也被锁住了,也是同样的锁。

| 253688 | webadmin | xxxx   | pt_test | Query   |    171 | Waiting for table level lock | insert into ptp_jgg(sub_type) values(9999)这类表级锁好像在MyISAM中还是看到过,结果查看表的存储引擎,发现都是InnoDB,

对于这类问题的一种解决方法,就是使用kill的方式杀掉线程。

mysql> SELECT

->  a.*,CONCAT("kill " ,a.id,";")

-> FROM

->  information_schema.`PROCESSLIST` a

-> WHERE

-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值