为什么我可以在 innodb 的一条记录上有两个锁(X 和 S)?我知道S和X锁不能同时存在
why i can have two locks( X and S) on one record in innodb? i know that S and X lock can not exists at the same time
为什么我在 innodb 中的一条记录上可以有两个锁(X 和 S)?我知道S锁和X锁不能同时存在
你不能。您的 S 锁升级为 X 锁,这两个查询在同一事务中按顺序执行。你两者都没有。
如果第二个事务也获得了相同记录上的 S 锁,然后你的 FOR UPDATE
查询是 运行,它至少会阻塞直到另一个事务进行下一步操作,也许更长的时间,直到可能发生锁升级或确定不可能。最终提示会 return 否则你会陷入僵局。
为什么我在 innodb 中的一条记录上可以有两个锁(X 和 S)?我知道S锁和X锁不能同时存在
你不能。您的 S 锁升级为 X 锁,这两个查询在同一事务中按顺序执行。你两者都没有。
如果第二个事务也获得了相同记录上的 S 锁,然后你的 FOR UPDATE
查询是 运行,它至少会阻塞直到另一个事务进行下一步操作,也许更长的时间,直到可能发生锁升级或确定不可能。最终提示会 return 否则你会陷入僵局。