Пропускная способность: 500 запросов в секунду.
Для корректности каждый запрос в настоящее время выполняет следующее в одной транзакции базы данных:
Код: Выделить всё
1. Check if counter can be incremented further ?
1. If yes, insert a log entry representing the delta (increment/decrement)
2. Update (increment counter value) the corresponding counter row(s)
Можно ли значительно уменьшить это противоречие за счет использования более продвинутых транзакционных методов, таких как изоляция последовательных снимков (SSI) или подходы на основе управления несколькими версиями одновременного выполнения, при этом синхронно обновляя счетчики в рамках одной транзакции (вставка журнала + обновление счетчика)?
В реальном мире системы используют SSI/MVCC улучшить
пропускную способность для высококонкурентных обновлений счетчиков, или же конфликт
по-прежнему принципиально сохраняется, когда множество транзакций изменяют один и тот же
логический счетчик? Если конкуренция по-прежнему сохраняется даже после использования этих методов изоляции, какой подход нам следует использовать?
Подробнее здесь: https://stackoverflow.com/questions/798 ... throughput
Мобильная версия