出现这个状态表示的是有一个线程正在表t上请求或者持有mdl写锁,把select语句给堵住了。模拟方案
| session A | session B |
|---|---|
| lock table t write | |
| select * from t where id=1; |
20:30:56 select blocking_pid from sys.schema_table_lock_waits LIMIT 0, 10000 Error Code: 1100. Table ‘schema_table_lock_waits’ was not locked with LOCK TABLES 0.000 sec
刷新的时候是看不出来的
sys.schema_table_lock_waits
MySQL 共享锁 (lock in share mode),排他锁 (for update)
事务之间不允许其它排他锁或共享锁读取,修改更不可能
一次只能有一个排他锁执行 commit 之后,其它事务才可执行