Websocket выполняет запрос каждую минуту в mssqlserver - PullRequest
0 голосов
/ 07 ноября 2018

Я использую websocket из C #. Но мое приложение замедлилось. Тогда я ищу причину. И мы находим ниже запрос из журнала базы данных. Этот запрос (с другим guid) работал 75 раз за 1 час. И каждый запрос занимает очень много времени. И я думаю, что это блокирует мою базу данных. Что это за запрос? И почему это занимает много времени? А что значит "begin conversation timer"?

exec sp_executesql N'BEGIN CONVERSATION TIMER (''20a12dae-6fe1-e811-80d7-7ca23e8b6dfb'') 
TIMEOUT = 120; WAITFOR(RECEIVE TOP (1) message_type_name, 
conversation_handle, cast(message_body AS XML) as message_body 
from [SqlQueryNotificationService-fe5c857f-d91d-4db0-b6c5-29313929031c])
, TIMEOUT @p2;',N'@p2 int',@p2=60000

1 Ответ

0 голосов
/ 07 ноября 2018

Этот запрос пытается получить сообщение из Service Broker очереди. С BEGIN CONVERSATION TIMER он устанавливает время ожидания 2 минуты (120 секунд). Если в очереди ничего нет, он перестанет ждать сообщения через 2 минуты. Одно из возможных объяснений, почему ваши запросы медленные, заключается в том, что в соответствующей очереди нет сообщений, и они ожидают поступления нового, пока не истечет время ожидания.

...