Должен ли сервер быть постоянно подключённым к БД или только во время запросов?

Делаю небольшой сервис без фреймворка. Прямо сейчас настраиваю работу с БД. Не могу понять, как будет правильнее: постоянное подключение сервера с БД или подключаться, выполнять запрос и отключаться?

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


Ответы (2 шт):

Автор решения: S.H.

Думаю, что подключение к БД нужно оставить "от откуп" драйверу базы. В некоторых случаях (например, драйвер SqlClient для доступа из C# к MSSQL) драйвер сам управляет пулом соединений. Это приводит к тому, что программисту можно "не думать", открывать ему соединение с базой каждый раз, или держать, например, один статический экземпляр всегда открытого соединения - разница очень мала.

Если же подключаться к базе каждый раз - то, как минимум, это будет расходовать время на установление шифрованного канала (мне кажется, в современном мире уже нет "не сетевых" баз данных, так что я рассуждаю в этих терминах). Это довольно долго по сравнению с тем, чтобы просто послать запрос в уже открытый connection.

Без примера кода и понимания, какая база имеется в виду - трудно дать более конкретный совет...

→ Ссылка
Автор решения: Roman C

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

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

→ Ссылка