Зачем отключаться от базы данных? - PullRequest
5 голосов
/ 01 июля 2011

Справочная информация: Я пишу на C #, использую Microsoft SQL Server для баз данных.

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

Я разрываюсь между двумя решениями (возможно, существуют лучшие ...):

  • либо откройте соединение перед запросом, затем закройте его сразу после запроса SQL

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

В прошлом я использовал первое решение, но обнаружил, что открытие нового соединения может занять довольно много времени (особенно через VPN-соединение с моей локальной сетью, открытойчерез 3G) и что бы это замедляло мое приложение.Вот почему я решил пойти со вторым решением (в этом случае мое соединение должно быть всегда работоспособным, если мы забудем об истечении времени ожидания) и заметил некоторые лучшие показатели.

Нужно ли закрывать соединение наконец моего заявления или я могу забыть об этом?

Ответы [ 3 ]

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

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

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

4 голосов
/ 01 июля 2011

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

Вот хороший документ по пулу соединений с System.Data.SqlClient.SqlConnection.

0 голосов
/ 01 июля 2011

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

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