mysql一张表卡死,mysql 表 卡死

本文介绍了一种在MySQL中遇到的阻塞问题及其解决方案。当执行ALTER TABLE语句时,可能会遇到等待表元数据锁的情况。文章提供了如何使用SQL查询来定位阻塞进程并终止这些进程的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在测试环境的mysql执行一个alter table 语句时一直处于阻塞状态,通过 show processlist 查看线程一直处于Waiting for table metadata lock,

show processlist

select trx_state, trx_started, trx_mysql_thread_id, trx_query from information_schema.innodb_trx

KILL processid

------------SQL server

查找阻塞进程:

SELECT blocking_session_id '阻塞进程的ID', wait_duration_ms '等待时间(毫秒)', session_id '(会话ID)' FROM sys.dm_os_waiting_tasks

杀死阻塞进程:

KILL session_id

查找事务

SELECT es.session_id, es.login_name, es.host_name, est.text

, cn.last_read, cn.last_write, es.program_name

FROM sys.dm_exec_sessions es

INNER JOIN sys.dm_tran_session_transactions st --系统里还存在的事务

ON es.session_id = st.session_id

INNER JOIN sys.dm_exec_connections cn

ON es.session_id = cn.session_id

CROSS APPLY sys.dm_exec_sql_text(cn.most_recent_sql_handle) est

LEFT OUTER JOIN sys.dm_exec_requests er

ON st.session_id = er.session_id

AND er.session_id IS NULL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值