首先,咱们先来模拟一个场景。
session A
START TRANSACTION;
SELECT * FROM eps_approve;
session B
ALTER TABLE eps_approve ADD COLUMN faren_id3 INT;
此时,会发生阻塞。
通过show processlist发现,alter table 发生了Waiting for table metadata lock。
image.png
解决办法:
通过执行
select trx_state, trx_started, trx_mysql_thread_id, trx_query from information_schema.innodb_trx
image.png
kill 154
再次通过show processlist查询
发现alert table已经执行完毕
image.png