Мы ожидаем, что большое количество пользователей посетят веб-сайт, построенный с использованием IIS / .Net 4.0, для которого наш сервер базы данных SQL Server 2008 предоставляет данные. Размер базы данных составляет около 2 ГБ. Мы планируем увеличить MAX CONNECTION POOL от 500 до 1000 - для обработки предполагаемого трафика. Два вопроса
(1) Есть ли у кого-нибудь точные цифры производительности, указывающие на то, какое улучшение это может обеспечить? (2) Каковы последствия достижения этого числа MAX CONNECTION POOL в производственной среде?
Это действительно зависит от приложения и от того, как оно подключается. «Пул соединений сокращает количество открытий новых соединений. Пулер сохраняет право собственности на физическое соединение. Он управляет соединениями, поддерживая в рабочем состоянии набор активных соединений для каждой заданной конфигурации соединения. Каждый раз, когда пользователь вызывает Open в соединении, пулер ищет доступное соединение в пуле. Если объединенное соединение доступно, оно возвращает его вызывающей стороне, а не открывает новое соединение. Когда приложение вызывает Close в соединении, пуллер возвращает его объединенному набору активных соединения вместо его закрытия.Как только соединение возвращается в пул, оно готово к повторному использованию при следующем вызове Open.
Можно объединять только соединения с одинаковой конфигурацией. ADO.NET поддерживает несколько пулов одновременно, по одному для каждой конфигурации. Подключения разделяются на пулы по строке подключения и идентификатору Windows при использовании встроенной безопасности. Соединения также объединяются в пул в зависимости от того, включены ли они в транзакцию "- от http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx
Обратите внимание, что на самом деле вы можете снизить производительность из-за дополнительных проблем с блокировкой, если у вас выполняется дрянной код без возврата соединений в пул.
Что касается №2, ваше соединение ставится в очередь до тех пор, пока приложение не закроет какие-либо соединения.