я должен открыть соединение БД для каждого потока? - PullRequest
0 голосов
/ 02 февраля 2019

У меня разрабатывается приложение для чата.Python и postgresql находятся на стороне сервера, а xcode, android (java) - на стороне клиента (Web будет следующей фазой).

Серверная программа всегда работает на Ubuntu Linux.и я создаю поток для каждого клиентского соединения на сервере (серверная программа, разработанная python).Я не решил, как должны быть операции БД ?.

  1. Если я создаю общее соединение с БД и мне нужно использовать это соединение для каждой операции с БД клиента (Вставить, обновить, удалить ... и т. Д.).В этом случае, если я создаю общее соединение, я думаю, что у меня возникнет проблема с блокировкой в ​​будущем.(Когда я пытаюсь получить список сообщений чата при вставке другого пользователя)
  2. ЕСЛИ я создаю соединение с БД, когда каждый клиент подключается к моему серверу.В этом случае слишком много связи.и это вызывает у меня проблему с производительностью в будущем.
  3. Если я создаю соединение с БД перед каждой операцией с БД, тогда возникает так много операций открытия и закрытия БД.

Каково ваше мнение?Какой лучший способ?

1 Ответ

0 голосов
/ 02 февраля 2019

Лучший способ - поддерживать пул соединений с базой данных на стороне сервера.

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

Таким образом, вы не будете создавать новые подключения БД для каждого запроса, что будет дорогостоящей операцией.

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