我们有一个MySQL表,每天收到大约500万条记录。
每个记录都需要一点时间来处理与其相关的一些元数据。因此,我们有一个“生产者”进程,它将每个记录ID发送到消息队列(SQS)。
然后,我们有50个“消费者”,它们将提取每个ID并执行必要的处理任务。
这种模式效果很好。然而,数据量继续增长。我们的单个生产者不再能够跟上插入到表中的数据量。
我知道,我们可以增加更多的消费者,以加快处理。但是,在不发生ID冲突的情况下,加速生产者的好策略是什么呢?
更新
以下是表的结构:
id int(10) AUTO_INCREMENT
name varchar(255)
is_processed tinyint(1)
is_queued tinyint(1)
created_at timestamp
updated_at timestamp
meta_data text我希望有多个生产者运行,但不知道如何避免并发问题。
发布于 2018-05-01 17:27:01
最后,我使用了这样的方法:Best practices for multithreaded processing of database records --这为多个消费者分发了一组记录以供选择。它比使用队列处理单个记录要快得多。
https://stackoverflow.com/questions/50105504
复制相似问题