С чем связан пул соединений? - PullRequest
4 голосов
/ 18 мая 2009

Я читаю о пуле соединений в .net, и я не уверен, правильно ли я понимаю. Говорят, что закрытое соединение возвращается в пул, чтобы его можно было использовать позже. Но с чем связан бассейн? Это база данных или просто среда приложения (на каком компьютере она выполняется)? Если это последнее, то если у вас есть два пользователя, которые открывают свои приложения на двух разных компьютерах и запрашивают одно и то же соединение одно за другим, пул соединений не имеет значения, я прав?

Редактировать: конечно, я знаю, что будет иметь значение, если одно и то же приложение снова откроет то же соединение, но как насчет двух разных экземпляров одного и того же приложения?

Ответы [ 3 ]

3 голосов
/ 18 мая 2009

Пулы соединений ограничены клиентским ПК и связаны со строкой соединения и деталями аутентификации.

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

2 голосов
/ 18 мая 2009

Пул соединений - это просто набор на стороне клиента, который заполняется соединениями при первой попытке открыть соединение с базой данных. Если вы закончили работу с объектом соединения, он не удаляется, а возвращается в коллекцию доступных соединений.

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

Это хороший стартовый урок по теме:

http://www.eggheadcafe.com/tutorials/aspnet/df2b05d8-93ea-49e1-aeaa-d116a4d6ac3b/adonet-connection-poolin.aspx

1 голос
/ 10 июня 2009

ConnectionPoolCollection на самом деле является одноэлементным объектом, который содержит объекты ConnectionPool.

Вы можете проверить это, отразив статические функции в DbConnection для очистки одного пула или очистки всех пулов.

ClearAllPools - Очистить все пулы из DbConnection в SQL Server.

Поскольку объект является одноэлементным, он не работает через границы процесса. Вы получите пул на процесс.

Существуют некоторые поставщики ADO.NET, которые могут объединять процессы приложений, используя COM-объект для хранения ссылок на экземпляры, но большинство этого не делают.

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