会话1:select sleep(500) from t_biz1 where .....
会话2: set session wait_time_out = 5000; flush tables with lock;
会话3: select * from t_biz1 where ....
会话4: select * from t_biz2 where ....
会话5:unlock tables;
要保证
会话1的sleep时间大于会话2
会话1执行后,立刻执行会话2,此时会话1在执行,会话2阻塞住
再执行会话4,可以正常执行(因为这个表是在flush之后的发起select的)
再执行会话3,阻塞。此时其实是被会话2阻塞住了
如果会话1结束,会话2开始执行,会话3仍然阻塞
会话5执行后,会话3没才会结束阻塞开始执行,如果会话3超时就会有异常抛出
标签:阻塞住,flush,会话,mysql,table,执行,where,select From: https://www.cnblogs.com/NorthPoplar/p/17493355.html