我有 2 个表,一个称为 user,用于存储用户,另一个称为 process,用于存储更新用户的活动进程列表。
我想要做的是能够选择 50 个过时的用户,通过在进程表中插入一条记录来锁定他们,该记录具有我正在更新的用户 ID 范围,这样如果启动了第二个进程,它将不开始处理相同的用户。
总结一下:
- 在进程表中选择最后处理的id
- 在用户表中选择 50 ids > last processes id
- 在进程表中插入一条新记录,其 ids 范围为我将要处理的范围
我想确保如果同时启动 2 个进程(P1 和 P2),则每个进程连续执行 3 个步骤。IE:
- P1 步骤 1
- P1 步骤 2
- P1 步骤 3
- P2 步骤 1
- P2 步骤 2
- P2 步骤 3
并不是
- P1 步骤 1
- P2 步骤 1
- P1 步骤 2
- 等等
我该怎么做?事务或表锁?还是别的什么?
我的表是 InnoDB 的。
谢谢!