我什么时候需要担心ActiveRecord锁定?

时间:2012-02-01 22:05:09

标签: ruby

我读到了ActiveRecord的乐观锁定和悲观锁定功能,我在Rails代码中根本没有使用它们,事情似乎很好。知道何时使用它们有什么好的经验法则?当两个人试图编辑同一个对象时,我想是一个例子。

1 个答案:

答案 0 :(得分:1)

当您可以对同一数据进行并发更改时,以及没有明确规定哪些更改“获胜”时,您需要使用它们或其他解决方案来解决同一问题。这是两个人编辑同一个对象的次数的一部分。

一般情况下,当冲突不太可能时,乐观锁定是好的,因为它们对人们的开销较小:你可以只编辑,偶尔会被告知你需要重做工作,因为其他人改变了对象。

当可能发生冲突时,悲观锁定很好,并且重做工作的工作量很大,并且您的用户不希望长时间保持更改,并且可以信任他们是礼貌的,例如,完成后释放锁。

如果且仅当您对相同数据感兴趣的用户数量相对较少时,两者都能正常运行。两种模型都很难扩展到大量的并发编辑,因为它们要么强迫用户在发生冲突时重做工作,要么等到其他人完成工作才能完成工作。

如果您预计会发生冲突,而且只有极少数用户使用相同的数据,那么您希望寻找更高级的方法(如CQRS)来解决并发问题。