说SELECT FOR UPDATE设置一个IX锁。IX锁是意图排他锁,当发出时它意味着“事务T打算在扫描行上设置X(排它)锁”。MySQL术语表表示,关于意图排他性锁:
一种适用于表级别的锁,用于指示事务打算在表中的行上获取什么样的锁。相反,获取表上的意图共享(IS)锁的第一个事务阻止其他事务获取该表上的任何X锁。两阶段进程允许按顺序解析锁请求,而<
Using READ COMMITTED has additional effects(Reference MYSQL docs):
对于UPDATE或DELETE语句,InnoDB只对其更新或删除的行持有锁在MySQL评估WHERE条件之后,将释放不匹配行的记录锁。这大大降低了死锁的可能性,但仍然有可能发生。对于UPDATE语句,如果某一行已经锁定,InnoDB将执行“半一致”读取,将最新提交的版本返回给MySQL,以便