gpt4 book ai didi

sql - 对 Service Broker 的性能影响 WAITFOR RECEIVE with no TIMEOUT

转载 作者:行者123 更新时间:2023-12-04 02:19:24 30 4
gpt4 key购买 nike

没有超时的 WAITFOR RECEIVE 对性能有何影响?

我们构建了一个 .Net 服务,用于从我们的 SQL Server Service Broker 队列接收消息,然后将消息发送到 ActiveMQ。

如果我们不让服务每 5 秒轮询一次 SQL Server Service Broker 队列,那么如果我们在没有超时的情况下对队列执行 WAITFOR RECEIVE,会对性能产生什么影响?

最佳答案

来自 RECEIVE 的文档:

The statement waits until at least one message becomes available then returns a result set that contains all message columns.

将会发生的是 WAITFOR RECEIVE 将暂停并等待消息传入,并且仅在消息传入时才返回。如果它从未返回,它将永远坐在那里。

这不会消耗服务器资源(除了占用监听器),但如果不经常接收消息,则很难终止发出调用的程序。 TIMEOUT 子句的好处在于,它为您的应用程序提供了一种定期检查是否有人请求程序终止的方法。如果没有将控制权返回给调用线程并让它检查是否应该自行退出的超时,您唯一的选择就是从外部强行终止线程。

每 5 秒循环一次调用与无限期保持调用相比,对服务器的影响差异小到无法衡量。

关于sql - 对 Service Broker 的性能影响 WAITFOR RECEIVE with no TIMEOUT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32013886/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com