Slotted counters и конкуренция строк
Cлотовые счётчики (slotted counters) представляют способ распределения операций увеличения значений на множестве строк для уменьшения конфликтов при одновременном доступе
Рассмотрим такой сайт, как YouTube, где надо отслеживать количество просмотров каждого видео. Удобно хранить эту информацию в виде столбца в таблице с видео, но для популярных видео будет множество запросов, одновременно пытающихся увеличить значение в одной и той же строке
Конфликты == блокировки == медленная работа!
Как это исправить? Распределить подсчёт по N строкам в специальной таблице счётчиков. На рисунке N=3, но можно установить N=100 или N=1000 в зависимости от нагрузки
При каждом увеличении случайным образом для инкремента выбирается одна из N строк. Когда нужно получить общее количество просмотров для видео, суммируются все значения счётчиков для строк с определённым v_id. Это можно делать по мере необходимости или через регулярные промежутки времени и сохранять в таблице видео
Post #2482
1.7K

- 👍 9
- 👏 3
- 🏆 3