假设我正在做这样的事情(来自Active Record Querying guide

Item.transaction do
  i = Item.first(:lock => true)
  i.name = 'Jones'
  i.save
end


交易结束后,锁会自动释放吗?我看了Active Query指南和ActiveRecord::Locking::Pessimistic docs,找不到它明确指出释放锁的位置。

最佳答案

锁定不是rails的功能,它只是将lock语句添加到查询中,这取决于您所使用的数据库而有所不同。悲观锁定认为每个查询都容易受到损坏,因此采取“悲观”观点。因此它将锁定选定的行,直到完成事务为止。因此锁定>查询>解锁。尽管这些是数据库之间相当一致的数据库,但最好阅读您用于所有特定于数据库的知识的数据库文档。

这是关于乐观锁定和悲观锁定的一个很好的线索,它比我能更好地解释它。 Optimistic vs. Pessimistic locking

关于ruby-on-rails - 悲观锁何时释放?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3205543/

10-10 12:48