Запросы SQL-сервера действительно медленные только при первом запуске - PullRequest
3 голосов
/ 06 января 2010

Довольно странная проблема ... когда я впервые запускаю свое приложение .NET после перезагрузки компьютера, запросы к SQL Server очень медленные ... когда я приостанавливаю отладчик, я замечаю, что он зависает при получении ответа из запроса. Это происходит только при подключении к удаленному серверу SQL (2008) ... если я подключусь к одному на локальном компьютере, это нормально. Кроме того, если я перезапущу приложение, оно будет работать быстро, даже с удаленного сервера SQL, и последующие запуски тоже подойдут. Единственная проблема - при первом подключении к удаленному серверу SQL после перезагрузки компьютера. Более того, я даже заметил то же самое поведение со сторонним приложением (также .NET), которое также подключается к удаленному серверу SQL.

Еще одна информация ... это началось только после того, как я обновил свой компьютер с XP до Win7 (64-битная версия). Кроме того, другие разработчики из моей команды, которые выполнили обновление до Win7, наблюдают аналогичное поведение (как для разрабатываемого нами приложения, так и для стороннего приложения .NET).

РЕДАКТИРОВАТЬ: также скопированы в https://serverfault.com/questions/100141/sql-server-queries-are-really-slow-only-on-first-run по предложению комментатора

Ответы [ 2 ]

7 голосов
/ 06 января 2010

Скорее всего, вы наслаждаетесь эффектом кэширования. При первом запуске запроса SQL создает план выполнения, а затем кэширует его. Если вы снова запустите запрос, он запомнит план выполнения, а в некоторых случаях вы увидите увеличение скорости. Поэтому, если вы тестируете запрос, вам необходимо очистить кеш. Ниже то, что я делаю.

Цитата с сайта Devx ( DEVx Tip )

запустить DBCC DROPCLEANBUFFERS, который очищает все данные из кэша. Затем запустите DBCC FREEPROCCACHE, чтобы очистить кэш хранимой процедуры.

НТН

1 голос
/ 06 января 2010

Проверьте настройки конфигурации клиента SQL Server ... возможно, TCP / IP не первый в списке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...