MySQL可以安全地用于联锁操作吗?

时间:2018-06-02 09:41:21

标签: mysql

为了争论,请参考以下查询: -

UPDATE table SET locked=1 WHERE id=10 AND locked=0;

如果说(在一个设计非常糟糕的系统中),有数百万台服务器正在争夺“锁定”。通过同时使用autocommit执行此声明,我们是否会认为只有一台服务器因受影响的行数而获得1的计数?

1 个答案:

答案 0 :(得分:0)

是的,这是一个安全的假设,即无论有多少争用,只有一个客户端能够看到“1行受影响”,因为相关行(InnoDB,无论自动提交的设置如何) )或者整个表(MyISAM,Memory,Federated)将在写入之前由存储引擎自动锁定并在之后解锁,因此即使是完美定时的冲突,也只有一个线程可以“赢”。

相关问题