Выполнение хранимой процедуры очень медленно - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть хранимая процедура SQL Server, содержащая целую серию запросов, которые раньше были очень быстрыми на старом сервере, но теперь действительно очень медленными на новом сервере. Я пытаюсь понять, что происходит не так.

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

Он предлагает следующую статистику:

Stored procedure performance 1

Я выполнил другой запрос, и он дал похожие результаты:

Stored procedure performance 2

Но что все это значит? Есть идеи, что мне делать дальше?

Редактировать: Просто читая эту статью: https://sqlperformance.com/2014/06/io-subsystem/knee-jerk-waits-pageiolatch-sh, и это говорит о том, что тип CXPACKET вызывается сканированием параллельных таблиц, а PACKETIOLATCH_SH вызван проблемой подсистемы ввода-вывода (диска или сети). Все еще расследую.

1 Ответ

0 голосов
/ 26 апреля 2019

Начиная с SQL Server 2014, появился новый оптимизатор запросов. Это может быть причиной того, что ваш SP работает плохо. Попробуйте выполнить SP после установки уровня совместимости базы данных 110.

ALTER DATABASE your_database SET COMPATIBILITY_LEVEL=110;
GO

Кроме того, я могу изменить ваш SP, добавив флаг трассировки OPTION (QUERYTRACEON 9481)

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