Огромные различия в производительности между соединениями - PullRequest
2 голосов
/ 04 июня 2010

Я пытался проверить разницу в производительности между вставкой в ​​таблицу напрямую и вставкой в ​​представление в другой базе данных, которая указывает на таблицу. Я был потрясен, увидев, что цикл WHILE с 10 000 вставок в простую таблицу занял 3 секунды, а против просмотра - 30 секунд.

Как я исследовал, я обнаружил, что если я переключаю окна в SSMS, производительность представления будет такой же, как и в таблице, как я думал, что это должно было быть. Затем я переключил БД в окне просмотра на таблицу БД и вставил туда, и это было медленным при движении прямо к таблице.

Это указало мне на мысль, что в связях есть какая-то разница. Это были разные вкладки в SSMS, одна из которых была создана с помощью -N. Я не выполнял никаких команд SET, кроме SET NOCOUNT ON (в обоих окнах), и вся статистика, планы запросов и т. Д. Были отключены.

Когда я запускал SQL Profiler для просмотра соединений, у них были одинаковые настройки. Хотя разница в производительности была на 100% стабильной.

Я проверил, что ни в одном соединении не было открыто ни одной транзакции.

Я попытался открыть другой экземпляр SSMS и не могу воспроизвести медленную производительность (хотя это происходит на двух из трех моих вкладок в первом экземпляре SSMS).

Это все на локальном сервере. Мне нужно будет закрыть его примерно через час, и я не знаю, смогу ли я воспроизвести эту проблему, поэтому, надеюсь, я смогу получить некоторые предложения до этого:)

Любые другие идеи о том, в чем может быть разница?

1 Ответ

3 голосов
/ 04 июня 2010

Я предлагаю вам сравнить строки для медленной и быстрой сессии в sys.dm_exec_sessions и посмотреть, есть ли что-нибудь другое.

...