Открытие соединения с базой данных требует значительного количества времени и ресурсов. Пул соединений повышает производительность веб-приложений, повторно используя активные соединения с базой данных вместо создания нового соединения для каждого запроса. Менеджер пула соединений управляет открытыми соединениями. Когда приходит запрос на новое соединение, менеджер ищет неиспользуемые соединения в пуле и возвращает одно из них, если таковое имеется в наличии. Если все соединения в пуле заняты и максимальный размер пула не достигнут, создается новое соединение и добавляет в пул. После достижения максимального размера пула все новые запросы ставятся в очередь и ожидают освобождения одного из соединений в пуле или истечения времени ожидания.
Работа пула соединения регулируется параметрами в строке соединения. Следующие четыре параметра контролируют большую часть поведения пула соединений:
- Connect Timeout - время ожидания в секундах при запросе нового соединения, в случае превышения будет выброшено исключения.
- Max Pool Size - определяет максимальный размер пула соединений. По умолчанию 100. Большинство веб-сайтов используют не более 40 одновременных соединений под самой тяжелой нагрузкой, но это зависит от того, сколько времени занимает выполененние ваших запросов к базе
- Min Pool Size - начальное количестов соединений, который будут добавлены в пул после его создания. По умолчанию ноль, но вы можете заменить его небольшим числом, если вашему приложению требуется постоянно время ответа даже после многочасового простоя. В таком случае пользователю не придется ждать открытия этих соединений.
- Pooling - включает и выключает использование пула. Как вы наверно догадываетесь по умолчанию true. Ниже я опишу те ситуации, в которых вы можете использовать Pooling=false.
Читать далее →