У нас есть таблица MySQL, в которую ежедневно записывается около 5 миллионов записей.
Каждая запись требует немного времени для обработки некоторых метаданных, связанных с ней. Таким образом, у нас есть ОДИН «процесс» производителя, который отправляет каждый идентификатор записи в очередь сообщений (SQS).
Затем у нас есть 50 «потребителей», которые опускают каждый ID и выполняют необходимые задачи обработки.
Этот шаблон хорошо работает. Тем не менее, объем данных продолжает расти. Наш единственный производитель больше не может идти в ногу с объемом данных, вставляемых в таблицу.
Я понимаю, что мы можем добавить больше потребителей для ускорения обработки. Но что является хорошей стратегией для ускорения продюсера без столкновений ID?
UPDATE
Вот структура таблицы:
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
Я бы хотел запустить несколько производителей, но не знаю, как избежать проблем с параллелизмом.