【问题标题】:JDBC / MySQL query and update in a transaction事务中的 JDBC / MySQL 查询和更新
【发布时间】:2012-07-31 16:46:42
【问题描述】:

基本上我们的用户配置算法会做类似的事情

-查询新用户 -更新数据库以显示您拥有该用户

我想知道如何锁定进程的其他实例在已经启动时执行“读取”步骤的能力。所以它比典型的事务要激进一点,因为它需要是一个读-读锁,当然不相关的进程应该能够在不受锁影响的情况下进行读取。

【问题讨论】:

    标签: mysql sql jdbc transactions locking


    【解决方案1】:

    您可以简单地立即运行 UPDATE 查询以“窃取”当前服务器的所有非活动用户。

    由于单个 UPDATE 查询始终是原子的,这将确保每个用户只被一台服务器抓取。

    由于 MySQL 不允许您从 UPDATE 返回更新的行,因此您需要添加一个标识符列来告诉您哪些行被“窃取”。
    每次供应用户时,选择一个 GUID,在 UPDATE 语句中将标识符列设置为该 GUID,然后在他们仍然具有该 GUID 的位置选择行。

    【讨论】:

    • 这实际上解决了这个问题 - 我将保留这个问题只是因为我很想了解更多关于如何使用 MySQL 事务相关的功能来解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 2018-04-12
    • 2012-10-19
    相关资源
    最近更新 更多