首页 > 数据库 >MySQL锁表问题

MySQL锁表问题

时间:2023-10-16 15:22:05浏览次数:47  
标签:事务 锁表 数据库 问题 kill MySQL 进程 执行

今天遇到一个情况,一条SQL语句执行提示如下异常。

Lock wait timeout exceeded; try restarting transaction

翻译一下是说,获取锁超时,尝试重新启动事务。翻译一下就是当我们申请对表进行加锁时,另外一个事务已经对这个表加了锁,经过一段时间等待后,我们的事务依然没有获取到锁,所以提示超时了。如果稍后重试可以成功,说明我们的数据库设置的超时参数可能太短了,结合我们的业务我们可以调整数据库参数。如果重试后依然不行,很可能是大事务将表锁了,这个时候,我们需要从两方面解决问题,一方面需要优化大事务或者添加告警机制,另一方面需要手动终止这个大事务,解除表锁。

以下仅描述解锁过程,大事务优化暂且不表。

连接数据库

数据库是主备模式,同时配置了VIP,需要先查询下数据库的实际IP,确定主节点IP,然后通过数据库工具或者命令行连接主节点实例。

查找锁并解除锁

通过如下命令查找正在执行的进程,从中可以看到有一个进程执行了超过12000s,即已经执行数日还没结束,判断该进程就是执行异常锁表的进程,使用kill命令终止这个锁表进程。

show processlist;
kill 锁表进程id;

执行kill命令后,可以看到执行异常导致锁表的进程Command变成了Killed.

大功告成?

NO,该进程只是被标记为Killed状态,但是依然在执行,如果是大事务导致的,则在执行回滚动作,待回滚结束才是真的结束,所以需要耐心等待,等这个进程不再出现在processlist列表中,则该进程被成功终止。

如果你拥有PROCESS权限,则可以通过下面的SQL来查看这个大事务的状态。

SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;

待锁表的进程被终止后,可以通过下面的语句查看目前被使用的表,in_use表示有多少线程正在使用该表。

show open tables where in_use > 0;

标签:事务,锁表,数据库,问题,kill,MySQL,进程,执行
From: https://www.cnblogs.com/aaronking/p/17767388.html

相关文章

  • 约瑟夫环问题
    我今天要讲的问题是约瑟夫环问题。本蒟蒻第一篇学术文章,多多支持,写的不好请见谅。洛谷题库约瑟夫环问题这题是一道好题目,我这里推荐两种解法1.直接模拟我用了一个数组来模拟,在圈内为无穷大,不在圈内则为0。模拟时要注意以下几点:如果当前已经出了圈,那么这个位置不算一人。......
  • MySQL的InnoDB索引失效的场景和优化
    康师傅YYDS索引失效案例索引最好是全值匹配。where条件中等值比,同时where的条件一起创建联合索引。最佳左前缀如果有一个联合索引,要想使用到,需要从联合索引的最左边的字段开始写,一点一点的写上。主键插入顺序在InnoDB中,使用自增的主键。避免索引页面分裂计算、函数、类型......
  • 关于留学读硕的常见问题汇总
     留服认证留服认证是指中国教育部留学服务中心+国(境)外学历学位认证,是目前国内官方权威认证途径,也是国内普遍接受的一个凭证。留信认证是一种新型的认证方式,接受度比留服认证稍低,虽然近年来不断被留学生和部分企业认可,但是对于想要进体制内的留学生,留信认证是无法被认可的。留服......
  • 解决matplotlib中文显示乱码问题
    问题findfont:Genericfamily'sans-serif'notfoundbecausenoneofthefollowingfamilieswerefound:SimHei解决方法importmatplotlibprint(matplotlib.matplotlib_fname())输出:xxx/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc下载htt......
  • 记录一些问题吧
    vue3+vite+eleplus  Componentname"layout"shouldalwaysbemulti-word.我都还么开始写就报这个几把错误,搞定 ......
  • ubuntu 22.04安装mysql5.7
    ubuntu22.04系统安装mysql5.7一、查看系统默认安装的数据库版本apt-getupdateapt-cachepolicymysql-serverubuntu20.04自带的版本是8.0.34,而我们需要安装mysql5.7的版本就需要换源二、更换apt源1.备份原来的source文件cp/etc/apt/sources.list/etc/apt/sources......
  • 【分布式】解决树莓派4B-64位更换清华源问题(GPG error:because the public key is no
    【分布式】解决树莓派4B-64位更换清华源问题(GPGerror:becausethepublickeyisnotavailable)别出BUG求求了于2022-04-3016:15:38发布阅读量3.1k收藏18点赞数7分类专栏:分布式文章标签:debianbash树莓派清华源publickey版权分布式专栏收录该内容18篇文章1......
  • XTS测试问题分析
    CTS相关解决方式模块名备注恢复出厂CtsInputTestCases恢复出厂CtsSecurityTestCasesRemoteDPC相关IPV6相关CtsLibCoreTestCasesIPV6相关CtsNetTestCasesIPV6相关CtsAppSecurityHostTestCasesGTS相关开机导航处登google账号Setup......
  • 软件测试|selenium 元素无此属性NoSuchAttributeException问题分析与解决
    SeleniumNoSuchAttributeException异常原因及解析简介在使用Selenium进行Web自动化测试时,我们可能会遇到NoSuchAttributeException异常。这个异常通常在尝试访问一个元素的属性(attribute)时抛出,但该属性不存在。本文将介绍NoSuchAttributeException异常的常见原因以及解决方法,并附......
  • 如何解决使用代理IP后网速变慢的问题
    随着互联网的不断发展,越来越多的人开始使用代理IP来保护自己的隐私和安全。但是,有些人在使用代理IP后发现自己的网速变慢了。那么,如何解决使用代理IP后网速变慢的问题呢?下面我们将从以下几个方面进行详细的介绍。一、代理IP的原理代理IP是一种通过中间服务器来转发网络请求的技术。......