Как это поможет?
ну они будут выгребать и делить примерно поровну, один не будет делать большие селекты
Вы сами написали, что вам нужно распределять нагрузку, как с этим поможет ограниченный селект(а сейчас он какой?)?
И в этом случае лучше все-таки не блокировать строку, а ввести что-то вроде виртуального партицирования, то бишь отдельная таблица, в которой каждая строка репрезентирует воркера и распределяет батч сообщений из основной таблицы. Lock-free механизм и не будет провоцировать автовакуум(если мы говорим про mvcc базу, офк). Но это не поможет с распределением нагрузки, если у вас характер нагрузки на репликах разный(а если нет, то суть вопроса не понятна).
одинаковый характер. Есть таблица task. Из нее каждый делает select * без ограничений. Начинаешь масштабировать - один инстанс все забирает
Well, ограничьте выборку… А если у вас действительно какая-то серьезная нагрузка, то возьмите схему выше.
ок допустим я сделаю select top 100, второй же инстанс эти же записи селектнет, нужно блокироваться получается? еще меня смущает, что шедулер будет практически одновременно на всех стартовать
как партиции ввести если заранее не знаешь скок инстансов будет?
Почему вы не знаете, сколько у вас будет инстансов? Возьмите с запасом, просто некоторые будут ассайнится на один воркер. Плюс их не так сложно повысить(с понижением сложнее).
Ну либо делать более гладкое распределение чем top 100.
Обсуждают сегодня