Какие недостатки существуют для того, чтобы оставить соединение SQL открытым? - PullRequest
8 голосов
/ 26 января 2010

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

Ответы [ 6 ]

10 голосов
/ 26 января 2010

Рано или поздно вы столкнетесь с ошибкой «Максимальный лимит подключений достигнут». Я бы назвал это серьезным недостатком.

7 голосов
/ 26 января 2010

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

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

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

Короче, всегда закрывайте соединение.

1 голос
/ 26 января 2010

Каждое соединение с SQL Server требует выделения памяти.

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

Если вы хотите узнать, сколько памяти используется соединениями в SQL Server, взгляните на следующую ссылку.

Память, используемая объектами SQL Server

1 голос
/ 26 января 2010

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

0 голосов
/ 26 января 2010

Быстрый простой ответ: чем раньше вы закроете, тем быстрее соединение может быть повторно использовано пулом соединений.

0 голосов
/ 26 января 2010

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

Вы также должны избавиться от него

...