Sidekiq 和 Rails 模型验证

Sidekiq and Rails model validations

我在 :create 上有一个模型验证,它验证某个属性是唯一的,我使用 sidekiq 上的一些后台作业创建了许多元素,在 50 个 mysql 连接的池中使用 50 个并发。

由于某些原因,我在验证的地方看到很多重复项,并发性有问题吗?

这个数量级是几百万条插入记录,我唯一的问题是我显然无法调试它,我无法预测如果我向我的节点添加一个节点会发生什么数据库集群,或者如果我改变我在数据库中插入内容的方式,就会发生这种情况。

有没有人知道这里发生了什么或如何继续调试它?

使用 Rails 验证唯一性是一个巨大的竞争条件。不要使用它。保证数据库中唯一性的唯一方法是使用唯一索引。

https://rietta.com/blog/2015/05/04/validates-uniqueness-race-condition-in-ruby-on-rails/