MySQL innodb在更新两个不同的行时死锁

我有两个不同的更新查询,例如,

UPDATE `logins` SET `logoutTime` = NOW() WHERE `userId` = '13' AND `date` = '2018-07-17'

UPDATE `logins` SET `logoutTime` = NOW() WHERE `userId` = '79' AND `date` = '2018-07-17'

这导致了一个innodb僵局 . userId和date字段已编制索引 . 此更新查询不使用任何事务 . 这两个更新在更新之前都有一个选择查询

SELECT count(*) FROM logins WHERE `userId` ='$userId' AND `date` = '2018-07-17'";

如果计数为0,则为插入,否则为更新 . select查询没有任何lock子句 . 为什么以上更新查询两个不同的记录导致死锁?

回答(0)