活动监视器显示 WAITFOR RECEIVE 的持续时间很长

SQL*_*gic 8 sql-server service-broker

在活动监视器中,以下查询导致高 CPU 和 281 毫秒的平均持续时间。

WAITFOR (
RECEIVE conversation_handle
    , service_contract_name
    , message_type_name
    , message_body 
FROM ExternalMailQueue 
INTO @msgs
)
, TIMEOUT @rec_timeout
Run Code Online (Sandbox Code Playgroud)

任何想法或步骤如何解决这个问题?

Rem*_*anu 12

这是一条红鲱鱼。WAITFOR (RECEIVE...)是根据定义应该......等待消息!因此,经过 281 秒仅意味着在 281 秒内没有消息接收。在这种情况下,应用程序是数据库邮件外部发送进程,它处于空闲状态,等待消息入队(即等待sp_send_db_mail被调用)。这里没有什么可以“解决”的。