【问题标题】:concurrent read and write to same value in database并发读取和写入数据库中的相同值
【发布时间】:2017-10-19 11:10:22
【问题描述】:

我正在制作一个投票应用程序,其中将对数据库中的每个候选人进行投票,由于其在线投票程序,有可能很多人一次投票给同一个人,所以我面临并发读取和更新的问题,相同的值,我应该如何处理这种情况。这样每个投票都被注册并且延迟应该是最小的。我使用 JDBC 和 mySQL 作为数据库。

【问题讨论】:

  • 你的代码是什么样的? update votes set candidate1 = (candidate1 + 1) ?
  • 使用 diff 表存储候选人和选票。当有人投票时,您可以添加一个条目。以后可以通过join得到结果。

标签: database jdbc concurrency dao


【解决方案1】:

@user3418790 确保您在该表上使用 InnoDB 数据库引擎。

在事务中使用锁定并将时间戳或版本标识符存储在表中,以便您知道行何时发生更改。

  1. 开始交易。
  2. 获取时间戳或版本并与您期望的值进行比较。如果更改则失败并让用户处理它。
  3. 更新数据。
  4. 提交事务。

那个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多