MySQL中insert语句没有响应的问题分析(r11笔记第21天)-阿里云开发者社区

开发者社区> jeanron100> 正文

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

简介:  今天开发的一个同学问我一个MySQL的问题,说在测试数据库中执行一条Insert语句之后很久没有响应。我一看语句是一个很常规的insert into xxx values形式的语句。
+关注继续查看

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

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

使用show proceslist查看线程情况。

0?wx_fmt=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
    ->  a.STATE = 'Waiting for table level lock';

 这样就会生成很规律的kill语句。

当然我也没有着急这么做,和开发同学简单了解,他们之前碰到这类问题,是找系统运维的同学直接重启MySQL的,看来这个问题之前也碰到过,这我就更有兴趣了解了。

查看MySQL的error log也没有发现什么明显的错误,使用ps -ef|grep mysql查看进程的信息,突然发现系统中是设置了一个定时任务去备份数据,不过开始没有引起我的注意,但是这些线索都逐一排除之后,我的注意力就很自然的落在了这个备份脚本上。

打开备份脚本,我就明白问题的原委了。

备份的核心语句是通过变量的方式调用mysqldump的。

mysqldump -uroot -p$passwd pt_test | $GZIP -9 > $dump_path/pt_test$date.gz

这样一来这个语句毫无疑问就是这个锁表的罪魁祸首。

默认mysqldump会调用--lock-all-tables这个选项,也就意味着master的binlog和postion信息写入SQL文件的头部,而通用的方式是使用--single-transaction

执行的时候会有短暂的全局读锁,影响要低得多。

    所以这个问题的解决方式就很直接,当前解决就是直接kill掉正在进行的mysqldump,杀掉备份的mysqldump之后,再次查看show processlist,这些线程马上就是sleep状态了。

    这样一来,这个问题就算是基本解决了,我想以后至少不会因为这样而无端重启MySQL了。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
从Intellij IDEA14 SpringMVC4+Hibernate4问题得到的启发
1、在添加model类hibernate注解的时候,idea一直提示没有配置数据源(其实是假报错,浪费我这么长时间,感觉idea还是和vs有很大的差距)! 2、解决上面的问题,又报错,原来id的注解写成了自动生成(@GeneratedValue(strategy=GenerationType.AUTO)),而id的类型是sting改成int就可以了。
517 0
java编程学习笔记——mybatis SQL注入问题
 SQL 注入攻击   首先了解下概念,什么叫SQL 注入:   SQL注入攻击,简称SQL攻击或注入攻击,是发生于应用程序之数据库层的安全漏洞。
1251 0
Observability:使用 Elastic Stack 分析地理空间数据
在今天的文章中,我们将参考之前的文章 “如何使用 Elasticsearch ingest 节点来丰富日志和指标”。我们可以利用 Elasticsearch ingest 节点来更加丰富我们的数据,并对这些数据做更进一步的的分析。
1266 0
yum管理包流程_学习笔记
时间:2017.12.03作者:李强参考:man,info,magedu讲义,万能的internet声明:以下英文纯属个人翻译,英文B级,欢迎纠正,以下内容纯属个人理解,并没有对错,只是参考,盗版不纠,才能有限,希望不误人子弟为好。
622 0
文本分析和处理 awk|学习笔记
快速学习文本分析和处理 awk
31 0
AI公开课:18.05.16 周明博士(MSRA副院长)—北大AI第十一讲之《语言智能的进展》课堂笔记——你了解语言智能
周明博士,微软亚洲研究院副院长、国际计算语言学协会(ACL)候任主席、中国计算机学会理事、中文信息技术专委会主任、中国中文信息学会常务理事、哈尔滨工业大学、天津大学、南开大学、北航等多所学校博士导师。周明博士1991年获哈尔滨工业大学博士学位。1991-1993年清华大学博士后,随后留校任副教授。1996-1999访问日本高电社公司领导中日机器翻译研究。他是中国第一个中英翻译系统CEMT-I(哈工大1989年)、日本最有名的中日机器翻译产品J-北京(日本高电社1998年)的研制者。1999年,周明博士加入微软亚洲研究院,不久开始负责自然语言研究组。他带领团队进行了微软输入法、英库词典(必应词典
26 0
Linux 学习笔记-第一阶段-基础入门之Linux 安装与分区03
Overiew安装Linux,首先要有镜像文件,以CentOS为例,可以在官网或者国内某些镜像Server来获取镜像。根据自己的需要可以选择是 Everything 或者minimal iso.这里不写关于安装的细节,对于其中的一些关键步骤做些说明。
1156 0
数据结构学习笔记——最大子列和问题
PTA 中国大学MOOC-陈越、何钦铭-数据结构 01-复杂度1 最大子列和问题(20 分) 给定K个整数组成的序列{ N​1​​ , N​2​​ , ..., N​k},“连续子列”被定义为{ N​i , N​i+1​​ , ..., N​j},其中 1≤i≤j≤K。
1024 0
+关注
jeanron100
Oracle ACE,《Oracle DBA工作笔记》作者 现就职于国内某互联网公司,擅长数据管理,数据迁移,性能优化,目前专注于开源技术,运维自动化和性能优化。
1180
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载