2015-05-19 3 views
0

Я использую Mysql 5.6.4. c# 4.Рабочее открытие и закрытие соединения против commandTimeout

Дело 1. Просто скажите, что я установил commandTimeout = 300 (5 минут) и выполнил в 1 раз. а затем closeconnection.

Случай 2. Я выставиться commandTimeout = 150 (2,5 минут) и итеративно ту же самую процедуру два раза (Retry Count) , если время ожидания исключение пойманы в MySqlException.

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

+0

Какие факторы заставляют его работать во второй попытке, но не в первую очередь? –

+0

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

+0

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

ответ

1

Ни то, ни другое.

Время соединения/отключения очень мало. «Правильный» способ кодирования - подключиться, сделать все, что вам нужно, а затем отключиться.

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

ОБНОВЛЕНИЕ миллиона строк как стандартная задача обычно подразумевает плохо разработанную схему и поток данных. Давайте послушаем это.

1

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

Смежные вопросы