У меня есть таблица с Первичные ключи в строке как 12a4...
, c3af...
. Я хочу, чтобы обрабатывать их параллельно:Разделить шестнадцатеричный индекс на n штук
process_them(1,4) on machine 1
process_them(2,4) on machine 2
process_them(3,4) on machine 3
process_them(4,4) on machine 4
Doing выше, необходимо выбрать все строки в таблице, без машин, координирующие друг с другом. Лучшая идея, которую я могу придумать, чтобы разделить их на 16, как:
select * from table where id like '1%'
...
select * from table where id like 'e%'
select * from table where id like 'f%'
Есть ли лучшая идея, что позволяет мне больше расколов, как 1/2, 1/4, 1/8, 1/16, 1/32 и т. Д. Из всех строк?
Примечание: Я делаю это, чтобы обрабатывать данные пользователя в ночное время и отправлять им уведомление. Я ничего не редактирую в самой БД. И мы должны обрабатывать тысячи пользователей за раз, его нельзя разделить мелкозернистым способом, так как он не будет эффективным таким образом.
Если машины имеют инкрементирующий идентификатор системы, они могут использовать это в предложении LIMIT. Но это, вероятно, считается «координацией». ИМХО, чтобы достичь чего-то лучшего, чем то, что вы предлагаете, им нужно что-то знать об окружающей среде. – mabi
Я думаю, что распределенная база данных - лучшее решение. – Suleman