MySQL 锁等待超时(Lock wait timeout exceeded)

问题:Lock wait timeout exceeded; try restarting transaction

MySQL版本:5.6.44

官方文档

image-20211102115143947.png

意思是:InnoDB在锁等待超时过期时报告此错误。等待时间过长的语句被回滚(而不是整个事务)。如果SQL语句需要等待其他事务完成的时间更长,则可以增加 innodb_lock_wait_timeout 配置选项的值;如果太多长时间运行的事务导致锁定问题并降低繁忙系统上的并发性,则可以减少该选项的值。

分析

锁等待超时,可能是出现了死锁,也可能有事务长时间未提交

解决办法

  • 如果是死锁,MySQL提供了超时等待机制,超时获取不到资源即 rollback

四张重要的表

库:information_schema

表:

  • innodb_trx:当前运行的所有事务

  • innodb_locks:当前出现的锁

  • innodb_lock_waits:锁等待对应的关系

  • processlist:当前进程信息

查看各表信息

desc information_schema.innodb_trx
desc information_schema.innodb_locks 
desc information_schema.innodb_lock_waits
desc information_schema.processlist

innodb_trx 表

字段 释义
trx_id 事务ID
trx_state 事务状态
trx_started 事务开始时间
trx_requested_lock_id innodb_locks.lock_id
trx_wait_started 事务开始等待的时间
trx_weight
trx_mysql_thread_id 事务线程ID
trx_query 具体SQL语句
trx_operation_state 事务当前操作状态
trx_tables_in_use 事务中有多少个表被使用
trx_tables_locked 事务拥有多少个锁
trx_lock_structs
trx_lock_memory_bytes 事务锁住的内存大小(B)
trx_rows_locked 事务锁住的行数
trx_rows_modified 事务更改的行数
trx_concurrency_tickets 事务并发票数
trx_isolation_level 事务隔离级别
trx_unique_checks 是否唯一性检查
trx_foreign_key_checks 是否外键检查
trx_last_foreign_key_error 最后的外键错误
trx_adaptive_hash_latched
trx_adaptive_hash_timeout
trx_is_read_only 事务是否只读
trx_autocommit_non_locking

innodb_locks 表

字段 释义
lock_id 锁ID
lock_trx_id 拥有锁的事务ID
lock_mode 锁模式
lock_type 锁类型
lock_table 被锁的表
lock_index 被锁的索引
lock_space 被锁的表空间号
lock_page 被锁的页号
lock_rec 被锁的记录号
lock_data 被锁的数据

innodb_lock_waits 表

字段 释义
requesting_trx_id 请求锁的事务ID(等待锁的ID)
requested_lock_id 请求锁的锁ID
blocking_trx_id 当前拥有锁的事务ID
blocking_lock_id 当前拥有锁的锁ID

processlist 表

字段 释义
Id 线程ID
User 用户
Host 主机
db 数据库
Command 命令
Time 时间
State 状态
Info 信息

排查思路

模拟出现死锁
准备一张只有主键的表:t_test (id)

Navicat 新建查询1

begin

update t_test set id = 30 where id = 3;

-- 执行完 update 后,暂时不 commit
commit;

Navicat 新建查询2

begin

update t_test set id = 40 where id = 3;

-- 执行完 update 后,暂时不 commit
commit;

检查是否锁表

show open tables where in_use > 0;

查询当前正在执行的事务

select * from information_schema.innodb_trx
当前正在执行的事务.png

可以看到,此时的事务2,出现了 锁等待

查询当前出现的锁

select * from information_schema.innodb_locks
当前出现的锁.png

查询锁等待对应的关系

锁等待对应的关系.png

查询等待锁的事务所执行的SQL

SELECT
    a.trx_id '事务 id',
    a.trx_mysql_thread_id '事务线程 id',
    a.trx_query '事务 SQL' 
FROM
    information_schema.innodb_locks b,
    information_schema.innodb_trx a 
WHERE
    b.lock_trx_id = a.trx_id;
查找当前出现锁的事务SQL.png

可以看到,对应的 SQL 就是事务2的

最后,事务2 等待锁超时报错:Lock wait timeout exceeded; try restarting transaction;

事务二超过等待时长报错.png

时间大概50s, 锁等待超时时间配置

show variables like 'innodb_lock_wait_timeout';

通过事务线程ID查找进程信息

select * from information_schema.processlist where id = 388654
通过事务线程ID查找进程列表.png

通过其中的 HOST 字段信息就可以定位到是哪个程序的事务。结合事务的 SQL 语句可以定位到业务代码。

win10 查看端口信息

netstat -ano | findstr 59501
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容