以前从来没遇到过这种问题,虽然有相关现象(参见http://topic.csdn.net/u/20080123/15/47f2a905-36dd-45bf-a913-98b3018fd9d2.html)今天遇到的问题更奇怪了,用show processlist发现有很多查询被locked,然后有10来个查询在Sending data
然后我就用kill命令想把这些sending data的查询干掉看看。结果奇迹就出现了,所有查询都没被kill掉,只是command栏变成了"killed"。几分钟过去了也没任何动静。现在除了被locked的查询,就是被killed的,不知道该咋办了。
另外,locked的查询中,有一条update语句,该查询如果被kill,似乎就能恢复正常。这些查询很多都是简单根据id进行,速度应该相当快。而且也检查了磁盘空间有余,也没看到mysql日志有任何错误信息。

解决方案 »

  1.   

    实在找不出原因,我kill那个locked的update查询,结果马上所有locked的查询被正常执行,但那些"killed"的查询居然纹丝不动。崩溃了。
      

  2.   

    应该和loading无关吧?因为它啥都不干了。
    另外,loading怎么看?(后来这些killed查询也慢慢逐个消失了)
      

  3.   

    用两步。
    kill query PID;
    kill PID;
      

  4.   

    因为有一条执行语句造成了阻塞,其他的查询均在排队ing...把造成阻塞的sql kill掉,就云淡风轻了。需要注意,造成阻塞的sql要特别检查执行计划,优化之。我的经验,这种sql一般是巨耗资源的。
      

  5.   

    斑竹说的对
    上次一个扫描好几百万行的SQL语句就浪费了800M的内存。优化了以后就只有不到2M内存了。