Вызов хранимой процедуры очень медленно из Entity Framework 4 по необъяснимой причине - PullRequest
1 голос
/ 09 августа 2010

Хранимая процедура (запрос) при запуске в Management Studio занимает 4-8 секунд. Однако при запуске внутри службы WCF через Entity Framework это может занять больше минуты. WCF работает в VS 2010 в режиме отладки с веб-сервером разработки ASP.Net.

Фактический звонок

requests = transactionEntities.spRequestsForRescreening(cutoffDate).ToArray();

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

1 Ответ

1 голос
/ 09 августа 2010

Пока вызов выполняется из вызова WCF, у вас есть полная минута, чтобы выяснить, что происходит. Проверьте sys.dm_exec_requests и проверьте запрос WCF. Соответствующие столбцы:

  • wait_time, wait_type и wait_resource, чтобы увидеть, что блокирует выполнение (ввод-вывод, блокировка, конфликт ресурсов, медленный клиент и т. Д.)
  • blocking_session_id чтобы увидеть, какой другой сеанс блокирует выполнение
  • sql_handle, statement_start_offset и statement_end_offset, чтобы понять, какое утверждение внутри SP медленное (перекрестное применение sys.dm_exec_sql_text)
  • plan_handle для проверки плана выполнения (перекрестное применение sys.dm_exec_query_plan)

Проверяйте эти значения несколько раз во время выполнения из окна запроса SSMS, чтобы понять, что вызывает проблема вызова из WCF и почему это занимает так много времени.

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