SNIReadSync, выполняющий от 120 до 500 мс для простого запроса. Что я ищу? - PullRequest
2 голосов
/ 23 октября 2009

Я выполняю простой запрос к 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 мс.

Какие вещи мне нужно искать, чтобы сократить это время?

Спасибо!

Ответы [ 2 ]

1 голос
/ 24 декабря 2010

Я не тестировал, но хотел бы спросить, есть ли у вас такая же проблема, если вы используете TransactionScope с параметрами IsolationLevel.ReadUncommitted. Вы должны инкапсулировать свой полный набор вызовов, и это должно свести на нет необходимость в этом утверждении. Я понимаю, что это утверждение не является вашей основной заботой, но в целом.

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

0 голосов
/ 27 января 2010

Убедитесь, что пул соединений включен, иначе вы будете получать значительный штраф при каждом открытии соединения. В строке подключения установите Pooling = True или удалите любую ссылку на пул. Я считаю, что по умолчанию включено.

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

...