我这里有很多台电脑,跑的是相同的代码(分布式系统)。其中需要请求mysql
比如select koubei_url from autohome_pinpai where is_req=1 order by id asc limit 0,1;
每一次只需要获取一条信息就可以,然后程序会进行一系列操作后,修改is_req的值。
这里就是 需要保证所有在跑的程序获取到的是不同koubei_url,
是需要使用行锁?排他锁?还是1其它的,感谢大佬们帮忙
3 个解决方案
#1
如果你取的这条记录,要求你取之后别人不能改动,那么就需要加锁,可以用 FOR UPDATE
#2
这个就可以发散思维了,你可以做一个分发的过程啊,反正那么多的机器呢,这个最省事,还省资源
#3
加锁的话效率太低了,你可以在更新语句中加个条件is_req=1,然后根据更新影响条数,来判断是否更新成功,如果失败,重试查询更新操作。
#1
如果你取的这条记录,要求你取之后别人不能改动,那么就需要加锁,可以用 FOR UPDATE
#2
这个就可以发散思维了,你可以做一个分发的过程啊,反正那么多的机器呢,这个最省事,还省资源
#3
加锁的话效率太低了,你可以在更新语句中加个条件is_req=1,然后根据更新影响条数,来判断是否更新成功,如果失败,重试查询更新操作。