问题描述
有时候,遇到同样的 SQL 语句在正式环境的主库和只读实例的执行时间相距甚远时,第一时间就会想到是不是采样信息不一致,导致执行计划不准,从一个高效的查询变成了慢查询。...解决方案
如果这种现象已经发生了,可以尝试 kill 掉“最早的”那些慢查询。...即如果 tb1 上有慢查询,且进行了 analyze 后遇到了问题,找一下 tb1 上在 analyze 之前已经开始执行,但是没结束的慢查询,然后全部 kill 掉。...VALUES (9,'adam',25),(7,'carlos',25),(1,'dave',19),(5,'sam',22),(3,'tom',22),(11,'zoe',29);
这时候来伪造一个长时间执行的慢查询...可以看到这个状态出现的原因已经写得很清楚了:因为这个表的结构已经“改变”,所以新线程在打开 table 的时候需要等其他的线程先关闭。