Не пересчитывайте весь COUNT после каждого изменения: поддерживайте инкрементальный агрегат или счётчики по сегментам и периодически сверяйте их. Сначала уточните, нужна ли точность в текущий момент.
Как обновлять кэш с COUNT для таблицы на 100 миллиардов записей, если сам COUNT дорогой?
Не пересчитывайте весь COUNT после каждого изменения: поддерживайте инкрементальный агрегат или счётчики по сегментам и периодически сверяйте их. Сначала уточните, нужна ли точность в текущий момент.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Не пересчитывайте весь COUNT после каждого изменения: поддерживайте инкрементальный агрегат или счётчики по сегментам и периодически сверяйте их. Сначала уточните, нужна ли точность в текущий момент.
Для точного значения изменения счётчика связывают транзакционно с вставками и удалениями; одна глобальная строка может стать горячей точкой, поэтому применяют разделение по сегментам. При допустимой задержке CDC/события обновляют проекцию с дедупликацией и checkpoint, учитывая удаления и изменение фильтров. Для приблизительного отображения можно использовать статистические оценки, явно помечая их. Redis — лишь слой выдачи: нужны восстановление значения, атомарность обновления и защита от потери событий. Полная сверка выполняется контролируемо, не в пользовательском запросе.