mysql锁表处理
背景:
需要删除一个表,但是发现执行删除以后,整个mysql被卡住,疑似锁库了。
场景一、
一般情况,长时间执行语句锁表(修改表结构等操作),出现Waiting for table metadata lock
#检查有锁表的session,或者长时间执行的慢查询
show full processlist;
#查询表是否在使用
show open tables where in_use >0;
#查看锁表,mysql8可能不一样
#mysql8
select * from sys.innodb_lock_waits;
select * from performance_schema.data_locks;
select * from performance_schema.data_lock_waits;
#mysql5
SELECT * FROM information_schema.INNODB_LOCKs;
SELECT * FROM information_schema.INNODB_LOCK_waits;
#找到指定session,确认以后杀掉异常id
select * from performance_schema.processlist where id = 42007;
kill 42007
场景二、
事务异常致使锁表
#查看正在运行、未提交的事务,获取session id ,字段为 trx_mysql_thread_id
select * from information_schema.INNODB_TRX;
#找到指定session,确认以后杀掉异常id
select * from performance_schema.processlist where ID ='62648'
kill 62648
场景三、
异常查询致使锁表
对Table进行了一个失败的操作(比如查询了一个不存在的字段),这时事务没有开始,但是失败语句获取到的锁依然有效,没有释放
#当processlist以及INNODB_TRX都查不到结果时,检查查询失败的sql语句,存在错误字段查询也可能会导致锁表,找到异常thread_id
select * from performance_schema.events_statements_current;
#找到指定session,确认以后杀掉异常id
select * from performance_schema.processlist where ID ='62648'
kill 62648
#扩展:查看历史事务
select * from performance_schema.events_statements_history;
https://www.cnblogs.com/digdeep/p/4892953.html
https://www.cnblogs.com/gered/p/12769367.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫