Как я могу справиться с интенсивным взаимодействием с БД в часы пик?
Мы запускаем приложение, похожее на сайты, организующие соревнования, такие как http://www.hackerearth.com/, http://www.hackerrank.com/. Когда начинаются задачи, мы видим огромную нагрузку на наш сервер. Проблема в том, что нам нужно активно взаимодействовать с Postgres, чтобы задавать случайные вопросы, а затем отправлять их ответы. Существуют СОЕДИНЕНИЯ между несколькими таблицами, поиском и другими вещами, что приводит к большому трафику данных и делает нашу систему медленной и не отвечает много раз, что смущает.
Что мы можем сделать, чтобы сделать это лучше? Как обрабатывать вещи, которые много взаимодействуют с RDBMS, любым кэшированием или использованием базы данных в памяти. Я много искал по разным источникам, но не смог найти конкретных решений для наших нужд. Как компании организуют взаимодействие с базой данных и пользователями? Какие есть хорошие архитектуры для таких моделей? Любое понимание будет полезно.
2 ответа
Вам необходимо установить мониторинг для сбора метрик и использовать научный метод для выявления узких мест.
Затем вы можете планировать, внедрять и тестировать решения.
Повторите по мере необходимости.
В общем, есть пара моментов, о которых нужно позаботиться
- Убедитесь, что таблицы базы данных правильно спроектированы и проиндексированы.
Таким образом, у вас должны быть правильные типы данных столбцов в соответствии с хранимыми данными и индексы столбцов, которые используются для SELECTs / JOIN.
Используйте кэширование для данных, которые не должны быть свежими при каждой загрузке страницы.
Выделите надлежащие ресурсы для вашей базы данных. Убедитесь, что он использует достаточное количество реальной памяти и не использует подкачку.
Там не может быть конкретных источников, таких как how to do it exactly
, поскольку все зависит от вашего конкретного приложения и данных, которые вы храните.