出现死锁和 lock_wait_timeout 没关系, 后者是锁等待时间,锁并不是一定是死锁。
出现死锁问题,一般是程序设计有问题(不够严谨)。
好在数据库能给你检测出死锁错误来,否则只能是无休止地等待,这时软件会卡死。
有错误提示, 总比软件卡死强。

解决方案 »

  1.   

    出现死锁,也有可能是你的事务没有commit或者应用程序的exception里面没有rollback导致的。
      

  2.   

    对不起, 发的脑残贴子。。 当时太着急没把问题说明清楚, 现在解决了。
    最终是改数据库隔离级别来解决死锁问题。
    还有锁等待这个问题有点复杂, 也不好说明。。 出现锁等待的语句是在truncate 某张表的时候出现的, 改成delete了就好使了。start transaction;
    select * from tbl1 where 1=2 for update
    还没结束事物,
    这时候执行truncate会锁等待的改成delete from tbl 就好使了。 但也不是最终解决方案。 只是怀疑应用层在使用连接池没把事物给关好。 
    好了,结贴。。
      

  3.   

    回问:MySQL出现大量sleep正常么