Лучший способ использовать таблицу БД в качестве очереди сообщений / заданий

У меня есть таблица базы данных с ~ 50K строк в ней, каждая строка представляет работу, которая должна быть выполнена. У меня есть программа, которая извлекает работу из БД, выполняет работу и помещает результат обратно в БД. (эта система работает прямо сейчас)

Теперь я хочу разрешить нескольким задачам обработки выполнять задания, но быть уверенным, что ни одна задача не будет выполнена дважды (из-за проблем с производительностью это не вызовет других проблем). Поскольку доступ осуществляется посредством sproce, мой текущий способ - заменить упомянутую sproce чем-то, что выглядит примерно так

update tbl set owner=connection_id() where avalable and owner is null limit 1;
select stuff from tbl where owner = connection_id();

КСТАТИ; Задачи работника могут обрывать связь между поиском работы и отправкой результатов. Кроме того, я не ожидаю, что БД приблизится к тому, чтобы стать узким местом, если я не испорчу эту часть (~ 5 заданий в минуту)

Есть ли проблемы с этим? Есть лучший способ сделать это?

Обратите внимание«База данных как анти-паттерн МПК» здесь только немного уместно, потому что 1) я не делаю IPC (нет процесса, генерирующего строки, они все уже существуют прямо сейчас) и 2) основной недостаток, описанный для этого антишаблона, заключается в том, что это приводит к ненужной нагрузке на БД как процессы ждут сообщений (в моем случае, если сообщений нет, все может завершиться, как все сделано)

Ответы на вопрос(4)

Ваш ответ на вопрос