我有2个表,一个名为user,用于存储用户,另一个名为process,用于存储更新用户的活动进程列表。
我想要做的是能够选择50个过时的用户,通过在进程表中插入具有我正在更新的用户ID范围的记录来锁定它们,以便在第二个进程被触发时,它不会开始处理相同的用户。
总结:
我想确保如果同时启动2个进程(P1和P2),则每个进程连续执行3个步骤。即:
- P1第1步
- P1第2步
- P1第3步
- P2步骤1
- P2第2步
- P2步骤3
而不是
- P1第1步
- P2步骤1
- P1第2步
- 等
我该怎么做?交易还是表锁?甚至是别的什么?
我的桌子是InnoDB。
谢谢!
答案 0 :(得分:0)
行级锁定。 InnoDB的优点是它支持行级锁。您需要锁定您有兴趣更新的记录到该事务。您应该每批使用一个事务,这样您就可以在完成后积极地释放它们。
请参阅:http://dev.mysql.com/doc/refman/5.0/en/innodb-lock-modes.html