MYSQL完美解决生产环境改表结构锁表问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL完美解决生产环境改表结构锁表问题相关的知识,希望对你有一定的参考价值。
参考技术A 有时候,会很不小心,在业务运行中执行了一条锁表语句。这时候该怎么办?例如:修改元数据。
SHOW FULL PROCESSLIST 查看一下:
发现修改之后,锁表了。这时候怎么办? 杀死它 KILL 4623660
然后一切又恢复正常了。
一般对于数据量较大的表,需要修改表结构,或者做一些耗时比较久的锁表操作,建议在晚上(业务闲时)执行。这个时候可以配合使用任务处理一下。
如:修改一个表的字段长度,和添加索引
名词解释:
接着回家睡觉,第二天回来检查结果就好了。
附:添加唯一索引示例
mysql存储过程结合任务处理耗时操作
查看Mysql锁表语句
大早上的刷数据,大量的改表结构alter语句,就把表锁了。
数据库的使用过程中可能遇到锁表的情况,导致其他进程访问同样的表时出现超时的情况,如果是生产还会看到大量的pool 跪了,如果你在刷sql,你应该立即就会明白什么情况了。
show full processlist;
显示哪些线程正在运行,查看锁表语句等:
锁表的情况如上图:waiting for table metadata lock,如果不是和其他事物冲突的情况下,它会自己好,也可以停掉自己刷的sql它就会释放锁,和其他事物冲突的情况下可以杀掉,kill 2292。
查看正在被锁定的的表,注意:这条在发生事故时我没执行过,不知道结果,每次都忘了。
show OPEN TABLES where In_use > 0;
查看正在锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
查看等待锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
本文出自 “蚂蚁” 博客,请务必保留此出处http://215687833.blog.51cto.com/6724358/1923549
以上是关于MYSQL完美解决生产环境改表结构锁表问题的主要内容,如果未能解决你的问题,请参考以下文章