SNIReadSync выполняется за 120–500 мс для простого запроса.Что я ищу?

StackOverflow https://stackoverflow.com/questions/1610874

  •  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 или удалите все ссылки на объединение в пул.Я считаю, что по умолчанию включено.

Это решило проблему для меня.Надеюсь, это поможет вам и другим.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top