Как я могу справиться с интенсивным взаимодействием с БД в часы пик?

Мы запускаем приложение, похожее на сайты, организующие соревнования, такие как http://www.hackerearth.com/, http://www.hackerrank.com/. Когда начинаются задачи, мы видим огромную нагрузку на наш сервер. Проблема в том, что нам нужно активно взаимодействовать с Postgres, чтобы задавать случайные вопросы, а затем отправлять их ответы. Существуют СОЕДИНЕНИЯ между несколькими таблицами, поиском и другими вещами, что приводит к большому трафику данных и делает нашу систему медленной и не отвечает много раз, что смущает.

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

2 ответа

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам