现在有一个 一主多从的构架 一个从服务器的程序拿到一些数据 尽快的标记已读取 但是其他从服务器的程序还是有拿到那些标记的数据 每个从服务器拿取数据都不的不比较快 这个问题有什么好的办法吗
|  |      1kalsolio OP 从服务器都在获取数据去处理 但是不允许二次处理 现在一个从拿到之后 尽快的去标记我拿走了 但是其他的从 还是会发生拿走那些不应该获取的数据 | 
|  |      2kalsolio OP 特别容易发生在 需要处理的数据比较少的时段. | 
|      3lecher      2016-04-28 16:06:07 +08:00 via Android MySQL 上面还要分发到从服务器本身就有延时,做这个加锁的事务处理比较麻烦。 这是个典型的任务分发业务,可以考虑用消息队列,或者用支持队列的数据库进行处理,业务设计上比较简单。 如果延时要求不是特别高, MySQL 可以考虑用在主库 update taskerlist set tasker = uid where tasker=0 这类的语句。 查询没有被认领的并直接更新为认领状态,再去取业务数据,这个延时会小一些。 | 
|      4junweiyang      2016-04-28 16:06:25 +08:00 via Android 升级数据库版本 (逃 | 
|      5aru      2016-04-28 16:13:28 +08:00 每个程序取个名字,表上增加一个字段 worker ,默认值为 NULL 标记的时候加个限制条件 update xxxtable set worker='myname' where 原来的限制条件 and worker is NULL; 如果 affected row 为 0 ,那么表明被其他程序取走了,放弃这个任务,继续取其他任务 | 
|  |      6Infernalzero      2016-04-28 16:49:26 +08:00 可以试试 5.7 ,主从同步支持多线程了 | 
|  |      7kalsolio OP | 
|  |      8realpg PRO 明显你这是个 MQ 的需求,你非得弄成 MYSQL 复制…… |