问题描述:
今天开发时,发现系统中所有涉及到有张表的查询功能,怎么也查询不出结果,同时无法修改该表,初步怀疑是系统中有个功能把这张表给锁死了。
解决步骤:
步骤一、 查询锁,判断对应的表是否被锁
select * from information_schema.innodb_locks
步骤二、如果没有没有锁的话,就查询事务
select * from information_schema.innodb_trx
查询来的结果如图所示:
字段解释:
trx_query 当前事务正在执行的语句
trx_mysql_thread_id 事务线程id
trx_rows_locked 行锁
trx_tables_locked 表锁
trx_lock_memory_bytes 内存锁
步骤三、找到处于RUNNING状态时间很长的那张表对应的事务线程ID,把它kill调,trx_mysql_thread_id 替换成实际的线程ID值
kill trx_mysql_thread_id
最后附上ddl语句锁表解决方案:
mysql metadata lock锁(元数据锁)问题分析解决参考文章