SNIReadSync выполняется за 120–500 мс для простого запроса.Что я ищу?
-
05-07-2019 - |
Вопрос
Я выполняю простой запрос к SQL Server 2005:
protected static void InitConnection(IDbCommand cmd) {
cmd.CommandText = "set transaction isolation level read uncommitted ";
cmd.ExecuteNonQuery();
}
Всякий раз, когда я профилирую с помощью dotTrace 3.1, он утверждает, что метод SNIReadSync занимает от 100 до 500 мс.
На что мне нужно обратить внимание, чтобы скоротать время?
Спасибо!
Решение
Я не проверял, но мне было бы интересно, возникнет ли у вас такая же проблема, если вы использовали TransactionScope с параметрами IsolationLevel.ReadUncommitted.Вам придется инкапсулировать полный набор вызовов, и это должно свести на нет необходимость в этом операторе.Я понимаю, что это заявление Вас волнует не по существу, а вообще.
Еще одна вещь, которую вы можете сделать, — это создать класс DBConnectionScope (или использовать класс доверенного поставщика) и сократить общее количество открываемых соединений.
Другие советы
Убедитесь, что пул соединений включен, иначе вы будете получать значительный штраф при каждом открытии соединения.В строке подключения установите Pooling=True или удалите все ссылки на объединение в пул.Я считаю, что по умолчанию включено.
Это решило проблему для меня.Надеюсь, это поможет вам и другим.