Соединение с базой данных Java - PullRequest
1 голос
/ 27 марта 2012

Ко мне обратился программист, имеющий опыт работы с формами Oracle и переходящий в область Java. Он задал мне вопрос, на который у меня не было хорошего ответа. Вместо того, чтобы отвечать на это; Я всегда так делаю или так меня учили. Я решил провести исследование.

Вопрос: с многопоточными возможностями Java; почему вы не настраиваете соединение JDBC с базой данных для каждого пользователя, каждый в своем собственном потоке? Вместо того, чтобы настраивать пул соединений и применять защиту, какие пользователи могут получить доступ к пулу?

Ответы [ 2 ]

3 голосов
/ 27 марта 2012

Пул соединений лучше масштабируется.Если у вас есть выделенное соединение для каждого пользователя, вам потребуется 50 подключений для 50 пользователей.С пулом вы, вероятно, можете сделать что-то вроде 10 - 20 соединений для обработки 50 пользователей (в зависимости от варианта использования).Теперь взгляните на большую группу и подумайте о том, как обрабатывать 500, 5000 или 50000 пользователей, и вы увидите, что 1 соединение на модель пользователя не масштабируется.

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

1 голос
/ 27 марта 2012

Поскольку затраты на поддержание большого количества потоков неэффективны. Что происходит, когда пользователей больше, чем может обслуживать ваш сервер приложений или база данных? Что происходит, когда в таблице базы данных много споров?

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

Что-то вроде DBCP от Apache - хорошее место для начала, если вы не используете сервер приложений.

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