- 如果访问一个表长时间打不开,看不到数据很有可能出现了表锁,如下前三步即可解决:
**
- 查询是否锁表
show OPEN TABLES where In_use > 0;
- 查看在锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
- 杀死进程id(就是上面命令的trx_mysql_thread_id列)
kill 线程ID
- 补充
- 查看等待锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
- 查看innodb引擎的运行时信息
show engine innodb status\G; 查看造成死锁的sql语句,分析索引情况,然后优化sql语句;
- 查看服务器状态
show status like '%lock%';
- 查看超时时间
show variables like '%timeout%';
- 查看等待锁的事务