Можно ли переделать outbox так, чтобы избежать UPDATE и связанного с ним MVCC bloat?

Можно сделать outbox append-only и хранить прогресс relay отдельно, но это меняет модель обработки, а не устраняет все затраты. DELETE тоже создаёт MVCC-мусор; иногда удобнее очистка партициями.

Короткий ответ

Что ответить на собеседовании

Можно сделать outbox append-only и хранить прогресс relay отдельно, но это меняет модель обработки, а не устраняет все затраты. DELETE тоже создаёт MVCC-мусор; иногда удобнее очистка партициями.

Подробный разбор

Ответ с пояснениями

Можно сделать outbox append-only и хранить прогресс relay отдельно, но это меняет модель обработки, а не устраняет все затраты. DELETE тоже создаёт MVCC-мусор; иногда удобнее очистка партициями.

Главная опасность — курсор по возрастающему id может пропустить поздно закоммиченную транзакцию с меньшим id. Нужен алгоритм, учитывающий порядок commit, либо CDC, а не простое «прочитал max(id), двигаюсь дальше». Также сохраняются повторы после сбоя между отправкой и фиксацией прогресса. Для небольшого потока UPDATE статуса и настроенный autovacuum могут быть безопаснее сложной схемы; выбирайте по измеренной проблеме.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее