2012-02-01 77 views
1

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

回答

1

如果可以对同一数据进行并发更改,并且没有明确规定哪些更改“胜出”,则需要使用它们或解决相同问题的其他解决方案。这是两个人编辑同一个对象的时间的一个子集。

一般来说,当冲突不太可能时,乐观锁定是很好的,因为它们对于人们来说开销较小:您可以编辑,偶尔会被告知需要重做工作,因为其他人更改了该对象。

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

当且仅当您对相同数据感兴趣的用户数量相对较少时,两者都能正常工作。这两种模式都不能很好地适应大量的并发编辑,因为它们要么迫使用户在发生冲突时重做工作,要么在完成工作之前等待其他人完成工作。

如果您期望发生冲突,并且超过极少数用户使用相同的数据,则希望查看更高级的方法(如CQRS)来解决并发问题。

相关问题