Время ожидания соединения и время соединения

В чем преимущество и недостаток таймаута соединения = 0?

И какое использование Connection Lifetime = 0?

e.g

(Database=TestDB;
 port=3306;
 Uid=usernameID;
 Pwd=myPassword;
 Server=192.168.10.1;
 Pooling=false;
 Connection Lifetime=0;
 Connection Timeout=0)

и что такое использование пула соединений?

Ответ 1

Время ожидания - это то, как долго вы ожидаете ответа от запроса, прежде чем сдаваться. TimeOut = 0 означает, что вы будете продолжать ожидание соединения навсегда. Хорошо, я думаю, если вы подключаетесь к действительно медленному серверу, это нормально, если требуется 12 часов, чтобы ответить:-). Вообще плохо. Вы хотите поместить какой-то разумный тайм-аут по запросу, чтобы вы могли реализовать свою цель и двигаться дальше со своей жизнью.

Время соединения= продолжительность жизни соединения до его уничтожения и воссоздания. Срок службы 0 означает, что он никогда не убивает и не воссоздает. Обычно это не плохо, потому что убивать и воссоздавать соединение медленно. Через различные ошибки ваши соединения могут застрять в нестабильном состоянии (например, при работе со странными 3-сторонними транзакциями), но в 99% случаев полезно поддерживать непрерывность соединения как бесконечное.

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

Вкратце:
ConnectionTimeout = 0 - это плохо, сделайте что-то разумное, как 30 секунд.
ConnectionLifetime = 0 в порядке
ConnectionPooling = отключено плохо, вы, скорее всего, захотите его использовать.

Ответ 2

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

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

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