Автор — Pinal Dave
Сегодня я хотел бы обсудить кое-что из моего реального опыта. За время моей работы в консалтинге, я повидал множество типов ожиданий, но у одного из моих клиентов, который использовал SQL Server для всех своих операций был, была интересная проблема с определённым типом ожиданий. У нашего клиента было более 100 экземпляров SQL Server и у всех преобладал один тип ожидания — MSSQL_XP. После анализа работы сервера с помощью sp_who2 и других диагностических запросов, я не смог обнаружить запросов с типом ожидания MSSQL_XP. Я смог найти решение только через день и оно оказалось очень простым. Давайте продолжим обсуждение данного вида ожиданий.
Из Book On-Line:
MSSQL_XP возникает когда задача ожидает завершения расширенной хранимой процедуры. SQL Server использует данный вид ожиданий, чтобы обнаружить MARS дедлоки приложения. Счётчик ожиданий останавливается, когда расширенная хранимая процедура завершает своё выполнение.
Объяснения MSQL_XP:
Данный вид ожиданий возникает когда выполняется расширенная хранимая процедура в рамках SQL Server, однако SQL Server не контролирует её выполнения. Если вы не знаете что делает код расширенной хранимой процедуры, то невозможно понять причину ожиданий MSSQL_XP.
Уменьшение MSQL_XP:
Как мы обсудили ранее, сложно понять причину, если не известен код расширенной хранимой процедуры. У нашего заказчика, с ситуации которого мы начали этот пост, причиной данного типа ожиданий было backup приложение, оно использовало расширенные хранимые процедуры в ходе своей работы. Как только мы поняли это, мы связались с вендором и они подтвердили что код не оптимален и в течении дня выпустили патч. После установки патча, ожиданий MSSQL_XP больше не стало ни на одном из 100 экземпляров SQL Server.
Вывод: вы должны понять какой код расширенных хранимых процедур вызывает MSSQL_XP, после чего необходимо связаться с автором данного кода и помочь ему с его оптимизацией.
Заметка: Представленная тут информация является исключительно моим опытом. Я настаиваю на том, чтобы вы читали Books On-Line. Все мои рассуждения о ожиданиях носят исключительно общий характер и варьируются от системы к системе. Прежде чем использовать это на рабочем сервере, рекомендую провести тестирование на сервере разработки.