Что означает ограничение на соединение с базой данных? - PullRequest
0 голосов
/ 16 ноября 2018

Я использую Django с базой данных Postgres от heroku.База данных heroku имеет

"предел соединения 20" .

Я не понимаю, что это значит.

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

И что произойдет, если будет достигнуто общее количество соединений?Сайт все еще работает?

1 Ответ

0 голосов
/ 16 ноября 2018

Каждый выполняемый вами запрос устанавливает соединение с базой данных.

Например, если вы хотите получить какие-либо данные из вашей базы данных, это то, что обычно происходит:

1 - Вывыполните ваш запрос на уровне django.

2 - Django переведет ваш запрос в SQL.

3 - Django создаст соединение с вашей базой данных.

4 - Ваш запрос будетбудет выполнен в базе данных.

5 - Django получит результат.

6 - Django закроет соединение.

Это ограничение означает, что у вас может работать только 20 задачна шаге 3-6 одновременно.

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

Вы должны либо обновить сервер / получить больше серверов, либооптимизировать код, чтобы сделать меньше запросов (например, объединение запросов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...