Тест производительности SQL Server Query - PullRequest
0 голосов
/ 01 мая 2018

У меня есть 2 сервера, на которых установлен SQL-сервер и точно такая же база данных. В базе данных есть процедура хранения, которая на сервере A занимает 35 минут, а на таблицах сервера B - 9 часов. Процедура в основном обновляет несколько таблиц, но данные точно такие же, поэтому я не понимаю, почему разница во времени такая огромная

Может кто-нибудь посоветовать мне фиктивный запрос, который я могу запустить на обоих серверах (не относящихся к текущим данным), чтобы сравнить производительность. например вставив 5 миллионов строк, а затем обновив их все.

Только для информации, спецификация сервера B является более высокой спецификацией, индексирование одинаково для соответствующих таблиц, блокировка не выполняется, пока сервер B SP выполняет

1 Ответ

0 голосов
/ 01 мая 2018

Существует множество возможностей, но если данные и аппаратные средства должны быть похожими в двух средах, то, возможно, происходит перехват параметров *1002*?

По сути это означает, что при первом запуске процедуры составляется план с текущими параметрами, и этот план сохраняется вместе с процедурой. При следующем запуске процедуры она повторно использует старый план, что может быть очень плохо для нового параметра.

Вы можете попробовать добавить «WITH RECOMPILE», чтобы посмотреть, сильно ли это изменит производительность.

ALTER PROCEDURE <procedure>
<Parameters>
WITH RECOMPILE
AS
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...