gpt4 book ai didi

mysql - 防止我们的 Rails 应用程序中的重复数据库插入/更新来自同时事务

转载 作者:可可西里 更新时间:2023-11-01 08:07:27 26 4
gpt4 key购买 nike

随着我们的 Rails 应用程序处理不断增加的用户事件和负载,我们开始看到一些与同时事务有关的问题。我们使用 JavaScript 在点击后禁用/删除按钮,这在大多数情况下都有效,但不是理想的解决方案。简而言之,用户正在快速连续地执行多次操作。因为该操作导致一行插入到数据库中,所以我们不能只锁定表中的一行。鉴于受影响模型的事件水平很高,我无法使用您用于更新的常用锁定机制 (http://guides.rubyonrails.org/active_record_querying.html#locking-records-for-update)。

这个问题 ( Prevent simultaneous transactions in a web application ) 解决了一个类似的问题,但它使用文件锁定 (flock) 来提供解决方案,因此这不适用于多个应用程序服务器,就像我们一样。我想我们可以用 Redis 或我们所有应用程序服务器都可用的其他数据存储来做类似的事情,但我也不知道这是否真的能完全解决问题。

防止同时执行的事务重复数据库插入的最佳方法是什么?

最佳答案

尝试向出现问题的表添加唯一索引。它不会阻止系统尝试插入重复数据,但会阻止它存储在数据库中。您只需要在插入失败时处理它。

关于mysql - 防止我们的 Rails 应用程序中的重复数据库插入/更新来自同时事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8727535/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com