我正在使用 C# 中的 websocket。但是我的应用程序变慢了。然后我寻找原因。并且,我们从数据库日志中找到以下查询。此查询(使用不同的 guid)在 1 小时内运行了 75 次。而且每次查询都需要很长时间。我认为它正在锁定我的数据库。这是什么查询?为什么需要很长时间? “开始对话计时器
”是什么意思?
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
最佳答案
此查询尝试从 Service Broker 获取消息队列。用BEGIN CONVERSATION TIMER它将超时设置为 2 分钟(120 秒)。如果队列中没有任何消息,它将在 2 分钟后停止等待消息。查询缓慢的一种可能解释是,相应队列中没有消息,它们等待新消息到来,直到超时。
关于c# - Websocket 在 mssqlserver 中每分钟运行一次查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53190456/