Открыть одно соединение против Открыть несколько - PullRequest
3 голосов
/ 13 июля 2011

Еще один вопрос, который я задал ..

Закрытие соединения методом «выгрузки»

Возбудил мой интерес к этой теме. Относительно asp.net/c# я понимаю, что при открытии / закрытии соединений с базой данных лежат основные затраты, меня интересует, дороже ли это либо ...

  • Открытое соединение с БД в начале запроса
  • Выполнить несколько операций
  • закрыть соединение в конце или запрос

против

  • Открывать соединение непосредственно перед любой командой базы данных
  • Закрой сразу (таким образом, открывая и закрывая соединения несколько раз во время запроса)

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

Ответы [ 3 ]

3 голосов
/ 13 июля 2011

Вы можете найти следующие ссылки полезными. Они указывают на лучшие практики Microsoft по внедрению Data Access Layer:

  1. Рекомендации уровня данных: http://msdn.microsoft.com/en-us/library/ee658127.aspx
  2. Дизайн компонентов данных: http://msdn.microsoft.com/en-us/library/ee658119.aspx
  3. О подключениях, в частности: http://msdn.microsoft.com/en-us/library/ee658127.aspx#Connections

Я согласен со Стивом, что в большинстве случаев вы должны держать соединение открытым в течение как можно более короткого времени.

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

3 голосов
/ 13 июля 2011

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

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

1 голос
/ 16 июля 2011

Дело не в том, является ли открытие соединения для каждого запроса более или менее дорогим.Речь идет о лучших практиках для уровня доступа к данным.И это не только ASP.NET или C #.Я бы сказал, что ваш второй вариант (как правило, только!) Кажется более разумным.Таким образом, вы можете больше контролировать закрытие соединения.В противном случае вы рискуете открыть слишком много соединений [в режиме ожидания]

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