按理来说,读操作之间不会互锁,
但是我在运行show processlist;时经常看到的现象是:
一个select处于sending data状态,若干select以及一个insert或update处于locked状态!update insert之类被锁住很正常,但为什么还存在其它select被锁呢?

解决方案 »

  1.   

    你的这两个冲突的SELECT语句是什么?理论上SELECT不应该加X锁啊。
      

  2.   


    不是两个互锁,是一群select被锁,
    用show processlist后,看到的大体是这样:| sending data | select ... |
    | locked       | insert ... |
    | locked       | select ... |
    | locked       | select ... |
    ...版主问的select语句,还没能再次捕捉的真正的现场,等捕捉到了发上来!
    那些select大体上都是涉及到两个表的查询,很复杂,有join,有union,insert 可能是update也可能是delete这样的写操作!
      

  3.   

    locked只是锁定,又不是死锁,这个很正常类似select * from tb_name for update这样的就是X锁
      

  4.   

    你的操作可能不是简单的Select的操作了