У нас есть таблица с именем worktable, в которой есть несколько столбцов (key
(первичный ключ), ptime
, aname
, status
, content
).
У нас есть нечто, называемое производителемкоторый помещает строки в эту таблицу, и у нас есть потребитель, который выполняет упорядочение по столбцу key
и выбирает первую строку, которая имеет статус «в ожидании».Потребитель выполняет некоторую обработку в этой строке:
- обновляет статус до «обработка»
- выполняет некоторую обработку с использованием содержимого
- удаляет строку
Мы сталкиваемся с проблемами конкуренции, когда пытаемся запустить несколько потребителей (возможно, из-за порядка, который выполняет полное сканирование таблицы).
Использование расширенных очередей было бы нашим следующим шагом, но прежде чем мы пойдем тудамы хотим проверить, какую максимальную пропускную способность мы можем достичь с несколькими потребителями и производителями в таблице.
Какую оптимизацию мы можем сделать, чтобы получить наилучшие возможные цифры?Можем ли мы выполнить обработку в памяти, когда потребитель извлекает 1000 строк за раз, обрабатывает и удаляет?это улучшится?Каковы другие возможности?разбиение таблицы?распараллеливание?Индекс организованных таблиц? ...