表中有主键的,好似不是这个原因开始事务SQL句子 查用户名  后加 for update延迟 10000秒保存事务在查询窗口中,测试另一个句子,查询 其它用户名   ,导致等待,,显然是表锁死了 为什么??

解决方案 »

  1.   

    一个进程for update 时, 其他进程是不能读的,会一直等待到前一个进程的事务结束。
      

  2.   

    可我查资料说,for update 是行锁,只是锁查询到的行
      

  3.   

    如果是不同行的话,我用客户端mysql测试是不等待的。更正一下,另一个进程如果是普通的select, 即使是同一行也不上锁, 除非加for update, lock in ...
      

  4.   

    mysql的行锁是基于索引,如果select语句没有使用索引,是会变成表锁的
      

  5.   

    可我查资料说,for update 是行锁,只是锁查询到的行
    产生行锁是需要你执行的语句的where条件是有索引的另外在mysql的默认隔离级别 查询是不锁的  除非现实加lock in share mode