首页

文章

请教一个MYSQL中死锁的问题

发布网友 发布时间:2022-03-25 05:01

我来回答

4个回答

热心网友 时间:2022-03-25 06:30

通过代码解锁。

代码如下    

1set global max_connections=4000;

增加允许的最大连接数,先让前台网站可以正常工作。

回过头google :mysql unauthenticated user

果然,遇到此类问题的人很多,问题在于mysql的反向ip地址解析,配置参数里加上skip-name-resolve就可以。

补充


一、查看进程运行情况(会话1)

代码如下    

1mysql> select id,user,host,db,command,time,state from processlist a;+—-+——+—————–+——————–+———+——+———–+| id | user | host | db | command | time | state|+—-+——+—————–+——————–+———+——+———–+| 40 | root | localhost:14046 | information_schema | Query | 0 | executing|| 39 | root | localhost:13992 | chf | Sleep | 251 ||| 38 | root | localhost:13991 | chf | Sleep | 251 ||+—-+——+—————–+——————–+———+——+———–+3 rows in set (0.00 sec)

二、构造表被锁现象
1)锁住表(会话1)

代码如下    

1mysql>LOCK TABLES chf.disc02 READ;或者–LOCK TABLES chf.disc02 WRITE;

2)执行dml操作(会话2)

代码如下    

1mysql>delete from chf.disc02 limit 1;–会话处于卡死状态

3)查询进程运行情况(会话1)

代码如下    

1mysql> select id,user,host,db,command,time,state from processlist a;+—-+——+—————–+——————–+———+——+———–+| id | user | host | db | command | time | state|+—-+——+—————–+——————–+———+——+———–+| 41 | root | localhost:14358 | chf | Query | 5 | Locked|| 40 | root | localhost:14046 | information_schema | Query | 0 | executing|| 39 | root | localhost:13992 | chf | Sleep | 343 ||| 38 | root | localhost:13991 | chf | Sleep | 343 ||+—-+——+—————–+——————–+———+——+———–+

4 rows in set (0.01 sec)
说明:发现进程id为41的进程状态为Locked
三、解锁操作
1)删掉被锁进程(会话1)

代码如下    

1mysql> kill 41;

出现现象(会话2)
ERROR 2013 (HY000): Lost connection to MySQL server ring query
2)查看进程(会话1)

代码如下    

1mysql> select id,user,host,db,command,time,state from processlist a;+—-+——+—————–+——————–+———+——+———–+| id | user | host | db | command | time | state|+—-+——+—————–+——————–+———+——+———–+| 40 | root | localhost:14046 | information_schema | Query | 0 | executing|| 39 | root | localhost:13992 | chf | Sleep | 298 ||| 38 | root | localhost:13991 | chf | Sleep | 298 ||+—-+——+—————–+——————–+———+——+———–+3 rows in set (0.01 sec)

四、批量解锁

代码如下    

1mysql> select concat(‘kill ‘,id,’;') kill_process from processlist a where a.state=’Locked’;+————–+| kill_process |+————–+| kill 43; || kill 42; |+————–+2 rows in set (0.01 sec)

Note:
1)可以使用show processlist查看当前用户连接
如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。show processlist;只列出前100条,如果想全列出请使用show full processlist;
2)在构造锁的会话中,使用unlock tables;也可以解锁

总结一下原因,大概如下:

因为mysql默认会根据客户端的ip地址反向解析,用于用户登录授权之用。不过正常情况下,很少会有人这样用。ip地址反向解析是很慢的,尤其是高负荷的mysql,每秒种几百次甚至更高的请求,这个请求压到本地的dns服务器上,dns服务器说不定会怀疑你在恶意请求,然后不理你了,然后这些登录请求就挂在那里,后面的连接还持续,然后越积越多,然后就达到mysql的最大连接数据*了,然后新的连接就直接被拒,得到连接数过多的消息。

因为mysql配置文件使用的之前的配置文件,当时跟web同服务器,所以不存在这个问题。

这也正好解释了为什么phpMyAdmin里看mysqld状态时,有很多失败的连接,它们应该就是因反解析失败而被拒的。

参考资料

MySQL解锁.壹聚教程[引用时间2018-1-21]

热心网友 时间:2022-03-25 07:48

是不是报了
ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction
的错误?

如果是的话,那么应该是有别的程序,也在更新这个表。
你需要确定另外一个程序处理的顺序。
然后想办法让你的同步程序,与那个程序,错开时间运行。

热心网友 时间:2022-03-25 09:23

多个线程不是根据主键同时进行update,会造成死锁

热心网友 时间:2022-03-25 11:14

加锁情况与死锁原因分析

为方便大家复现,完整表结构和数据如下:

CREATE TABLE `t3` (`c1` int(11) NOT NULL AUTO_INCREMENT,`c2` int(11) DEFAULT NULL,PRIMARY KEY (`c1`),UNIQUE KEY `c2` (`c2`)) ENGINE=InnoDBinsert into t3 values(1,1),(15,15),(20,20);


在 session1 执行 commit 的瞬间,我们会看到 session2、session3 的其中一个报死锁。这个死锁是这样产生的:

出师表高锰酸钾有画面了吗 2021年幼儿园新学期致家长一封信 电脑屏幕一条黑线怎么办? 销售代理商销售代理商的特点 商业代理商业代理的特征 如何看微信有没有开通微众银行 为什么微众没有开户 微众银行怎么开户 微众银行APP开户流程是什么? 唐古拉山海拔唐古拉山海拔是多少 怎么看待取消跳广场舞的人的退休金 如何选购新鲜的蓝田水柿? 恭城水柿柿树作用 创维洗衣机使用教程 创维全自动洗衣机怎么使用 自动开门器 狗羊属相婚姻相配吗 3岁的小孩不会说话怎么办 3岁孩子不会说话,应该挂什么科? 3岁小孩不会说话正常吗 鹿茸炖乌鸡怎么做? 新型冠状肺炎吃什么药可以预防 冰箱上电后一直响 食品生产许可证编号开头为“ G”。 库存过期香精 猎狐点卡平台经营范围 电影代理靠谱吗 兄弟三人,有什么好的QQ网名 租赁合同书范本简单版 简单房屋出租协议书模板 简单明了租房合同范本 租房合同书免费下载(实用6篇) 出租房屋合同 简洁的房屋租赁合同范本 阳光人寿保险是骗人吗? 三胎政策有那些配套措施有哪些 ...法院也立案了,可被没有可执行的财产怎么办,我的工资还能要回来吗... 离婚后析产案法院强制执行,对方说没有钱,我该怎么办 澳门为什么叫澳门? 新能源老年代步车锂电池 如何为职务侵占罪进行辩护 职务侵占如何辩护 职务侵占罪有效辩护点有哪些 miui11开发者选项在哪_小米miui11开发者选项在哪 查询考研成绩需要什么 考研查分前要做什么 考研查询需要什么证件 研究生什么专业好 什么专业的研究生最好 考研究生什么专业好 研究生学什么专业 宝石花的养殖方法介绍 宝石花怎么养才长得好 mysql死锁的原因和处理方法 mysql insert into select 语句为什么会造成死锁 mysql 存储过程出现死锁 2020-07-08:mysql只有一个表a,什么情况下会造成死锁,解决办法是什么? 软件闪退!怎么解决? vivo应用商店突然下载软件但无法安装,在浏览器中可下载可安装,但打开软件时闪退,怎么办,跪求!急 vivo浏览器后台运行的时候总是自动关闭? vivo浏览器总是停止运行 用vivo手机在uc浏览器看在线视频点击播放的时候出现闪退问题,怎么解决? vivo手机浏览器停止运行怎么恢复正常 vivoy31安装不了软件,在浏览器里下完后安装闪退? vivo浏览器停止运行 vivox60pro自带浏览器看一会视频会出现闪退这是啥毛病? vivo浏览器停止运行怎么办? vivoy37打开浏览器闪退 华为手机用vivo浏览器闪退 vivo浏览器中怎么闪退 vivo自带浏览器闪退 vivo浏览器闪退怎么回事 苹果13pro耗电快是什么原因? mysql 死锁:如何解决mysql死锁 怎么解决mysql 事务出现死锁的问题 请教一个 mysql 的死锁问题 MYSQL 存储过程报错Deadlock found when trying to get lock; try restarting transaction mysql发生死锁怎么解决 mysql 列级锁 死锁怎么办 如何避免mysql死锁问题 流量卡到底是什么东西? 手机流量卡是什么卡?怎么用? 手机流量卡是什么,怎么用?搞糊涂了 请问移动流量卡是什么?和普通手机卡有什么区别? 什么是电信“流量卡”? 移动流量卡什么意思 联通流量卡是什么? 移动流量卡和手机卡有啥区别 流量卡到底是什么东西? 联通流量卡是什么 无限量的流量卡是什么意思? 中国移动流量卡什么意思 什么是纯流量上网卡?纯流量卡多少钱一张呢?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com