Задать вопрос
Slash-Zn
@Slash-Zn

Как лучше обновлять счётчик записей?

Например, у статьи есть N комментов, это количество меняется при добавлении или удалении коммента +/-1. Так сейчас и обновляются счетчики у меня.

Задумался, а как лучше делать:
1. Добавлять/Отнимать единицу от количества, при добавлении или удалении.
2. Каждый раз пересчитывать общее количество записей, сразу после добавлении или удалении записи?

Как делаете Вы?
  • Вопрос задан
  • 132 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@tukreb
Раньше использовалось так:
1. Первый вариант, пока ничего не тормозит.
2. Второй вариант используется для отложенного обновления, обычно для счётчика просмотров, но идея та же, раз в час работает cron, который пересчитывает записи. До этого момента, они не меняются.

Сейчас есть другие способы, например загружать всё сначала в кэш, например в тот же redis, а потом раз в пол часа обновлять БД.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@rPman
триггером на insert/delete, быстрее и удобнее некуда
Ответ написан
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
Лучше всего вообще ничего не обновлять.
При наличии очевидного индекса на article_id, хоть какие-то проблемы подсчёт на лету начнёт создавать на объёмах уровня фейсбука.
Так что я бы сначала не со счётными палочками колупался, а проверил наличие индекса.
Ответ написан
Комментировать
@Everything_is_bad
Можно просто каждый раз рассчитывать кол-во комментов, при небольшой нагрузки это не проблема. Если это начинает сказываться на производительность, то делают денормализацию, отдельный счетчик это и есть такой случай. Если всё сделать правильно, то 1й первый без проблем работает, 2й вариант применяет при кривой реализации или есть случаи когда добавление/удаление происходит извне системы, другие решение это случая 1й вариант, с периодическим фоновым пересчетом.

А так, вообще не вижу тут проблемы, чтобы приходить сюда с таким вопросом, можно было просто подумать, поиспользовать на практике и тогда понять, какой подход нужен в конкретном случае. И главное, а при чем тут PHP?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы