为什么我可以在innodb的一条记录上有两个锁(X和S)?我知道S和X锁不能同时存在

时间:2017-06-15 04:00:33

标签: mysql innodb

enter image description

为什么我可以在innodb的一条记录上有两个锁(X和S)?我知道S和X锁不能同时存在。

1 个答案:

答案 0 :(得分:0)

你做不到。您的S锁升级为X锁,这两个查询在同一事务中按顺序执行。你没有两者。

如果第二个事务也在相同的记录上获得了S锁,然后运行了FOR UPDATE查询,它将至少阻止另一个事务进行下一步,可能更长,直到锁升级可能发生或被确定为impossibe。最终提示会返回,或者你会陷入僵局。