Предотвращение конфликтов обновлений счетчиков при высокой пропускной способности записиMySql

Форум по Mysql
Ответить
Anonymous
 Предотвращение конфликтов обновлений счетчиков при высокой пропускной способности записи

Сообщение Anonymous »

Мы поддерживаем несколько счетчиков, каждый входящий запрос увеличивает или уменьшает один или несколько счетчиков. Эти счетчики ограничены максимальным значением, по достижении которого мы отклоняем запросы.
Пропускная способность: 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)
Ключевая проблема заключается в том, что многие или даже все запросы могут быть нацелены на один и тот же счетчик, что приводит к серьезным конфликтам из-за блокировки на уровне строк в транзакционной базе данных, такой как MySql. По мере увеличения нагрузки обновления счетчиков сериализуются, и задержка может резко увеличиться.
Можно ли значительно уменьшить это противоречие за счет использования более продвинутых транзакционных методов, таких как изоляция последовательных снимков (SSI) или подходы на основе управления несколькими версиями одновременного выполнения, при этом синхронно обновляя счетчики в рамках одной транзакции (вставка журнала + обновление счетчика)?

В реальном мире системы используют SSI/MVCC улучшить
пропускную способность для высококонкурентных обновлений счетчиков, или же конфликт
по-прежнему принципиально сохраняется, когда множество транзакций изменяют один и тот же
логический счетчик? Если конкуренция по-прежнему сохраняется даже после использования этих методов изоляции, какой подход нам следует использовать?


Подробнее здесь: https://stackoverflow.com/questions/798 ... throughput
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»