在MySQL中,SELECT ... FOR UPDATE语句的锁定行为取决于查询条件和使用的索引。通常情况下,它会为查询结果加行级锁,但当查询条件涉及索引时,会变为索引级锁。索引锁只锁定被查询到的特定记录,而行锁则锁定整个行。如果查询条件不依赖索引且不会进行全表扫描,那么可能会导致表级锁的加锁。例如,...
在repeatable read事务隔离级别下,会加gap锁,不仅锁定行,还锁定行与行之间的间隙,以阻止其他会话在此区间插入。索引机制在此级别下更为复杂。在非序列化事务隔离级别下,普通select语句不加锁,读取表时不受锁影响。若使用select.. for share/ select ... for update,需注意其锁定机制。总结来说...