Запись представлений очень проста, просто добавьте в таблицу строку, представляющую действие «представление». Это быстро, потому что в базе данных блокировка не требуется, вы просто добавляете строку в конец кучи.
Объединение этого в общее количество просмотров требует чего-то вроде выполнения, SELECT COUNT(*) FROM ...
что означает, что вам нужно заблокировать таблицу во время выполнения расчета. В качестве альтернативы UPDATE ... SET num_views = num_views + 1
также требуется, чтобы вы блокировали эту конкретную строку каждый раз, когда кто-то просматривает ее.
Таким образом, с точки зрения масштабируемости, гораздо эффективнее добавлять строки каждый раз, когда кто-то просматривает видео, а затем делать это SELECT COUNT(*) FROM ...
каждые десять минут или около того.
Обратите внимание , я на самом деле не знаю архитектуру YouTube, или они даже использовать реляционную базу данных для хранения данных, но все , что они делают использование, принцип, вероятно , то же самое: вставляя данные дешев, агрегирование значений является (относительно) дороже ,