码迷,mamicode.com
首页 > 数据库 > 详细

mysql 数据库锁一般处理

时间:2018-07-26 15:14:24      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:open   table   ati   proc   wait   sch   产品   width   也会   

MySQL在进行alter table等DDL操作时,有时会出现Waiting for table metadata lock的等待场景。而且,一旦alter table TableA的操作停滞在Waiting for table metadata lock的状态,后续对TableA的任何操作(包括读)都无法进行,因为他们也会在Opening tables的阶段进入到Waiting for table metadata lock的锁等待队列。如果是产品环境的核心表出现了这样的锁等待队列,就会造成灾难性的后果。

 

show processlist; -- 查看数据库锁情况

kill id; -- kill 杀掉当前锁住的进程

select * from information_schema.innodb_trx -- 找到未提交事物的sid, 然后 kill 掉,让其回滚

select * from performance_schema.events_statements_current -- 查到执行失败的语句

 

 

 

 

 

alter table的语句是很危险的(其实他的危险其实是未提交事物或者长事务导致的),在操作之前最好确认对要操作的表没有任何进行中的操作、没有未提交事务、也没有显式事务中的报错语句。如果有alter table的维护任务,在无人监管的时候运行,最好通过lock_wait_timeout设置好超时时间,避免长时间的metedata锁等待。

 

mysql 数据库锁一般处理

标签:open   table   ati   proc   wait   sch   产品   width   也会   

原文地址:https://www.cnblogs.com/zhouy-77253569/p/9371039.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!