首页 > 数据库 >MySQL 锁表处理

MySQL 锁表处理

时间:2022-12-21 10:58:53浏览次数:47  
标签:trx lock 表处理 innodb timeout MySQL 超时 wait

show processlist;

kill pid

show OPEN TABLES WHERE in_use>0;

 

异常描述:
Caused by: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction

问题原因
在高并发的情况下,Spring事物造成数据库死锁,后续操作超时抛出异常
Mysql数据库采用InnoDB模式,默认参数:innodb_lock_wait_timeout设置锁等待的时间是50s,一旦数据库锁超过这个时间就会报错
解决办法
杀掉 Thread Id(临时)

到information_schema中查找被锁的语句

-- 查找出此问题的 trx_mysql_thread_id,然后进行KILL掉
select * from information_schema.innodb_trx;
select * from information_schema.innodb_locks;
select * from information_schema.innodb_lock_waits;

-- 模拟重现问题时,trx_mysql_thread_id = 15330615
kill 15330615;

trx_state=LOCK WAIT 即为当前出现等待的锁,
trx_mysql_thread_id 为当前事务线程ID.
kill ID 杀掉锁等待的线程。
show full processlist; 也能查询出出现锁等待的线程。

 

异常定位
可能出现锁表的原因:
1、在同一事务内先后对同一条数据进行插入和更新操作
2、分布式服务操作同一条记录
3、瞬时出现高并发现象,spring事务造成数据库死锁,后续操作超时抛出异常
4、事务A对记录C进行更新/删除操作的请求未commit时,事务B也对记录C进行更新/删除操作。此时,B会等A提交事务,释放行锁。

     当等待时间超过innodb_lock_wait_timeout设置值时,会产生“LOCK WAIT”事务。
5、数据库内存不足,导致无法执行写操作。

 

根治办法:找到锁表的事务,分析锁表原因,进行优化

1.查看当前锁超时时间
show variables like 'innodb_lock_wait_timeout';

2.查看全局锁超时时间
SHOW GLOBAL VARIABLES LIKE 'innodb_lock_wait_timeout';

3.更改当前锁超时时间为120秒
SET innodb_lock_wait_timeout=120;

4.更改全局锁超时时间为120秒
SET GLOBAL innodb_lock_wait_timeout=120;

 

标签:trx,lock,表处理,innodb,timeout,MySQL,超时,wait
From: https://www.cnblogs.com/walkersss/p/16995726.html

相关文章

  • MySQL-线程池介绍
    一、为什么使用MySQL线程池1、减少线程重复创建与销毁部分的开销,提高性能线程池技术通过预先创建一定数量的线程,在监听到有新的请求时,线程池直接从现有的线程中分配一个......
  • MySQL-Show Profile
    简介: ShowProfile是mysql提供的可以用来分析当前会话中sql语句执行的资源消耗情况的工具,可用于sql调优的测量。默认情况下处于关闭状态,并保存最近15次的运行结果。 1......
  • MySQL高可用复制管理工具 —— Orchestrator简介及基本搭建
    1、背景 Orchestrator(orch):go编写的MySQL高可用性和复制拓扑管理工具,支持复制拓扑结构的调整,自动故障转移和手动主从切换等。后端数据库用MySQL或SQLite存储元数据,并提供W......
  • MySQL45讲笔记
    MySQL基础架构MySQL架构可大体分为Server层和存储引擎两个部分Server层可分为连接器,分析器,优化器存储引擎层负责数据的存储和提取。其架构模式是插件式的,需要在建表......
  • 基于Java springboot+mybatis+mysql+jsp网上书城管理系统
    @目录一、系统介绍二、功能展示1.主页(客户)2.登陆(客户)3.我的购物车(客户)4.我的订单(客户)5.我的图书(商家)6.新书上架(商家)7.订单管理(商家)7.统计分析(管理员)8.用户管理(用户管理......
  • MySQL高可用工具Orchestrator:复制拓扑的发现
    1、orchestrator如何去发现mysql实例这个涉及到两个参数:HostnameResolveMethod和MySQLHostnameResolveMethodHostnameResolveMethod的值有三个选项:  "cname":通过c......
  • MySQL基于GTID复制模式小结
    一、GTID概念介绍GTID是mysql5.6版本出来的新特性GTID即全局事务ID(globaltransactionidentifier),其保证为每一个在主上提交的事务在复制集群中可以生成一个唯一的I......
  • 基于Spring+SpringMVC+Mybatis+Mysql在线考试系统
    @目录一、系统介绍二、功能展示1.用户登陆2.学生页面3.考试信息(老师)4.试卷库(老师)5.试题库(老师)6.考生信息(老师)7.成绩分析(老师)8.成绩排名(老师)9.错题统计(老师)10.成绩导出(老......
  • Mysql用户及其权限
    一、创建用户createuser'user_name'identifiedby'password';二、用户授权grant[权限名]on数据库名.表名touser_name[withoptiongrant];三、查看数据库中......
  • 基于Springboot+Mybatis+mysql+vue考研规划与交流系统
    @目录一、系统介绍二、功能展示1.主页(普通用户)2.登陆、注册(普通用户)3.复习规划制定(普通用户)4.经验分享交流(普通用户)5.考研学校资讯(普通用户)6.我的文章(普通用户)7.个人信......