美文网首页
记一次Mysql事物锁等待超时 Lock wait timeou

记一次Mysql事物锁等待超时 Lock wait timeou

作者: 朱溪江 | 来源:发表于2019-07-23 15:02 被阅读0次
问题发生背景:

在MySQL执行更新语句,大概也就一千行左右,执行不成功,报如下错误



然后开始漫长的排查过程
参考网上的各种原因分析,归根结底是以下原因,在高并发的情况下,多人多线程操作数据库造成死锁,后续操作超时抛出异常。
MySQL数据库采用innodb引擎,默认参数:innodb_lock_wait_timeout设置锁等待的时间是50s,一旦数据库锁超过这个时间就会报错。

解决方案:

1.查看各项参数,发现超时相当严重
show status like '%lock%';



2.show processlist;



当我准备kill 掉它时 发现kill不了

然后开始查mysql 服务关于event_scheduler(事件调度器)

MySQL中的时间调度器events_cheduler类似于linux中的crontab计划任务的功能,它是由一个特殊的时间调度线程执行的
1.查看当前是否开启了event_scheduler三种方法:
show variables like 'event_scheduler';
select @@event_scheduler;
show processlist;(是否有user为event_scheduler)
2.关闭事件调度器
set global event_scheduler = OFF;
对应开启
set global event_scheduler = ON;

再查看进程,发现那个进程已经不在了


相关文章

网友评论

      本文标题:记一次Mysql事物锁等待超时 Lock wait timeou

      本文链接:https://www.haomeiwen.com/subject/shnolctx.html