可能在等待锁
1
2
3
4show process list;
如果看到 State列为: waiting for table metata lock; 则证明在等待MDL表锁
select blocking_pid from sys.schema_table_lock_waits 可以找到阻塞的pid可能在等待flush
1
State列为: waiting for table flush
Mysql对表的flush一般有两种方式
1
21. flush tables t with read lock. - 只关闭表t
2. flush tables with read lock. - 关闭所有表正常情况下、这两个操作都很快、除非被阻塞…
等行锁
1
2
3
4mysql> select * from t where id=1 lock in share mode;
>5.7 版本可以通过看到被哪个sql阻塞了
mysql> select * from t sys.innodb_lock_waits where locked_table=`'test'.'t'`\Gsql慢