Как следует сохранить информацию о времени последнего визита пользователя?

Как эффективно хранить время последнего посещения пользователя, чтобы избежать задержек в 15-20мс при обновлении этого параметра?
  • 14 августа 2024 г. 12:33
Ответы на вопрос 2
Для сохранения информации о времени последнего визита пользователя рекомендуется использовать базу данных. Например, можно создать таблицу (или коллекцию, если используется NoSQL база данных) в базе данных, где будет храниться информация о каждом пользователе, включая время последнего визита.

Чтобы избежать задержек при обновлении этого параметра, можно использовать следующие методы:

1. Использовать индексы в базе данных для ускорения операций поиска и обновления значения. Например, создать индекс на поле, хранящее время последнего визита.

2. Использовать кэширование данных. Можно использовать кэширование на уровне приложения или в памяти базы данных, чтобы избежать лишних обращений к хранилищу данных.

3. Проводить оптимизацию запросов к базе данных. Например, использовать эффективные запросы, которые минимизируют время выполнения операций.

4. Подходить к проектированию базы данных с учетом эффективного хранения и обновления времени последнего визита. Например, выбирать подходящие типы данных и оптимальные структуры таблицы.

5. Рассмотреть возможность асинхронного обновления времени последнего визита. Например, использовать очереди сообщений для обновления параметра в отдельном процессе или потоке.
Кардинально ускорить UPDATE не выйдет. 

Если критично время, то лучше класть значение в Redis, а оттуда уже фоновым скриптом переносить в таблицу (если вообще этот шаг нужен, потому что данные жалко потерять).

Ну или просто сначала отдавать пользователю ответ, а потом в том же скрипте обновлять таблицу.

Или убрать ON DUPLICATE KEY UPDATE , кидать в таблицу каждый раз новую строку, а потом в фоне её периодически пылесосить от мусора.
Похожие вопросы