0

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

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

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

4

1 回答 1

1

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

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

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

于 2012-07-31T17:24:02.053 回答