Мы используем C# и Linq2SQL для получения данных из базы данных для некоторых отчетов. В некоторых случаях это занимает некоторое время. Более 30 секунд, что кажется по умолчанию CommandTimeout
.C#, Linq2SQL: Как долго должен быть CommandTimeout и где он должен быть установлен?
Итак, я думаю, мне нужно подняться до CommandTimeout
. Но вопрос в том, сколько? Плохо ли это просто установить его очень высоко? Было бы плохо, если бы клиент пытался что-то сделать, и только потому, что у него было гораздо больше данных в его базе данных, чем у обычного клиента, он не мог получить свои отчеты из-за тайм-аутов? Но как я могу узнать, сколько времени это может потребоваться? Есть ли способ установить его на бесконечность? Или это считается очень плохой?
И где я должен установить его? У меня есть статический класс базы данных, который генерирует новый datacontext для меня, когда он мне нужен. Могу ли я просто создать константу и установить ее всякий раз, когда я создаю новый datacontext? Или он должен быть установлен на разные значения в зависимости от usecase? Неужели плохо иметь высокий тайм-аут для чего-то, что не займет много времени? Или это не имеет значения?
Слишком высокий ConnectionTimeout
может, конечно, быть более раздражающим. Но есть ли случай, когда пользователь/клиент хотел бы что-то тайм-аут? Может ли сервер SQL заморозить, чтобы команда никогда не заканчивалась?
Как проверить стратегию индексирования? Думаю, в настоящее время нет добавленных индексов, но как я могу увидеть, где их добавить? (Первичные ключи уже проиндексированы?) – Svish