【发布时间】:2020-06-25 23:47:08
【问题描述】:
所以我维护了一个包含 150 多个数据库表的 Rails 应用程序。我们在几个地方遇到了僵局。
阅读这篇文章https://hackernoon.com/troubleshooting-and-avoiding-deadlocks-mysql-rails-766913f3cfbc 并更好地理解不同的情况。似乎我们拥有的一种常见模式是由于唯一索引在并发锁上相互等待。
所以我正在寻找一种方法来在模型中说它不应该尝试同时插入两个,因为 MySQL 会锁定表。我希望它尽可能简单。
class BingoCard < ActiveRecord::Base
protect_table_locks
end
这将使用 Redis 基础锁来环绕创建操作
我已经研究过这个答案的想法。 Mutex for ActiveRecord Model
我计划在获得答案后发布自己的答案。
【问题讨论】:
标签: ruby-on-rails activerecord rails-activerecord deadlock database-deadlocks