Как эффективно обмениваться объектами подключения к базе данных из пула подключений в C #? - PullRequest
4 голосов
/ 18 ноября 2011

привет, может кто-нибудь помочь мне найти, как эффективно делиться объектами соединения с базой данных из пула соединений .net.У меня есть веб-приложение, и я должен ограничить размер пула подключений до определенного числа (скажем, 20 подключений). Поэтому запросы от всех клиентских браузеров разделяют эти 20 подключений.И я прочитал, что если более 20 запросов приходит одновременно, остальные запросы вынуждены ждать освобождения любого соединения в пуле.Могу ли я иметь лучший способ управления этими соединениями?Моя главная цель - обработать как можно больше запросов в веб-сервере, не перегружая сервер базы данных.Может ли кто-нибудь помочь мне, пожалуйста ..

Ответы [ 2 ]

6 голосов
/ 18 ноября 2011

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

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

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

1 голос
/ 18 ноября 2011

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

Использование этих параметров в строке подключения:

Max Pool Size = 20
Pooling = True

Вы ограничиваете размер пула до 20.

См. Здесь для получения более подробной информации о ConnectionString.

...