Задача: Eсть родительский процесс который ставит задачи, то есть говорит что нужно обработать 1000 и оправляет это дочернему процессу который уже занимается обработкой, одновременно может работать до 10 дочерних процессов, после отработки дочерний процесс умирает и за место него появляется новый, длится до тех пор пока все записи не будут обработаны.
Есть необходимость обойти асинхронно 200 тысяч записей и после обработки 1 записи изменить ключ что запись уже была обработана.
На данный момент все записи обрабатываются кусками по 2000 записей.
Использую в примере псевдо язык программирования что-бы не грузить лишним кодом, но на бою использую php
, но также задача есть и для Python
То есть получаеться такой код:
count = "SELECT COUNT(*) as count FROM purchas WHERE status = 0;"
step = 2000
max = step
for (min = 1; min < count; min+=step) {
// Дальше идет асинхронный код
while(row = "SELECT * FROM purchas WHERE status = 0 LIMIT $min, $max;"){
"UPDATE purchas SET status = 1 WHERE id = $row['id'];"
}
}
Но логично обход буден не последовательный из-за того что вы меняет status
и вопрос как можно это реализовать методами SQL?
Возможно я не корректно задал вопрос.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть mysql таблица id | username | number | created_at 1 | valera | 50 | 2017-03-19
Выбирает из базы только первую строкуЧто может быть не так?
Необходимо сконвертировать переменную типа String, в переменную типа SqlDate
Какой смысле использовать Observable и Observer Если есть AsyncTaskТам тоже есть конечный метод, промежуточный и метод перед запуском класса