mysql 锁超时

对一个别人正在读写的表执行DDL操作,经常需要先锁表,但是这个表正在被人执行读写操作,那么就会报:Lock wait timeout 类的错误。

通过MDB实例详情页面的进程管理可以看到类似如下的情况,某个sql查询耗时超过了30分钟还没执行完,这个时候再对这个表执行ddl操作,肯定就会提示锁超时的错误了。

 

当然,我们也可以自己使用mysql客户端登录,show processlist查看进程信息(可以通过设置pager过滤:pager grep -iv sleep)。

 

处理办法:
1、等待正在执行的sql执行完毕再操作。
2、kill正在执行的进程然后继续ddl操作
3、如kill以后因为代码不停重试导致进程又出现了,建议停服以后操作或者在业务低峰期再操作。

posted on 2018-04-03 10:48  ExplorerMan  阅读(452)  评论(0编辑  收藏  举报

导航