Назад | Перейти на главную страницу

Как справиться с интенсивным взаимодействием с базой данных в часы пик?

Мы запускаем приложение, больше похожее на конкурсы, организующие сайты, такие как HackerEarth.com, HackerRank.com. При запуске задач мы видим огромную нагрузку на наш сервер. Проблема в том, что нам нужно активно взаимодействовать с Postgres, чтобы задавать случайные вопросы и затем отправлять их ответы. Есть JOINS между несколькими таблицами, поиском и другими вещами, что приводит к большому трафику данных и делает нашу систему медленной и не отвечающей много раз, что смущает.

Что мы можем сделать, чтобы это стало лучше? Как обрабатывать вещи, которые много взаимодействуют с СУБД, любое кеширование или использование базы данных в памяти. Я много искал в разных источниках, но не смог найти конкретных решений для наших нужд. Как компании организуют базы данных и взаимодействие с пользователями? Какие архитектуры подходят для подобных моделей? Любая информация будет полезна.

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

Затем вы можете планировать, внедрять и тестировать решения.

При необходимости повторите.

В общем, есть пара моментов, о которых вам нужно позаботиться.

  1. Убедитесь, что таблицы базы данных правильно спроектированы и проиндексированы.

Итак, у вас должны быть правильные типы данных столбцов в соответствии с хранимыми данными и индексы столбцов, которые используются для SELECT / JOINs.

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

  2. Выделите необходимые ресурсы для вашей СУБД. Убедитесь, что он использует достаточный объем реальной памяти и не использует подкачку.

Не может быть конкретных источников вроде how to do it exactly, поскольку все зависит от вашего конкретного приложения и данных, которые вы храните.