Один из наших клиентов только что перешел на новый сервер.
Для конкретной хранимой процедуры при ее первом запуске требуется более трех минут. Последующие пробеги менее 1 секунды.
Это наводит меня на мысль, что первые три минуты в основном используются для расчета плана выполнения. Последующие запуски затем просто используют кэшированный план и запускаются мгновенно.
В наших тестовых базах данных для расчета плана для той же процедуры требуется около 5 секунд.
Я не вижу ничего ужасного в самом плане - хотя я не представляю его актуальным, так как план показывает, сколько времени требуется для выполнения запроса, а не для его расчета.
Сервер состоит из 16 ядер с 24 ГБ памяти. Не происходит большой загрузки процессора или памяти.
Что может быть причиной таких медленных вычислений только в конкретной базе данных?
Какие шаги я могу предпринять, чтобы найти причину проблемы?
редактировать
Поэтому мне удалось получить доступ к серверу и выполнить запрос с помощью SET SHOWPLAN_XML ON .
Я могу подтвердить, что CompileTime для запроса занимает 99% времени выполнения запроса. StatementOptmEarlyAbortReason является «TimeOut» , на нашей тестовой базе данных с копией базы данных их причина MemoryLimitExceeded.
StatementOptmEarlyAbortReason
?