如果 RECEIVE 端点在收到 END DIALOG 消息时没有结束对话会发生什么?
它最终会减慢 SqlServer 的速度,因为它必须跟踪很多对话吗?
如果 RECEIVE 端点在收到 END DIALOG 消息时没有结束对话会发生什么?
它最终会减慢 SqlServer 的速度,因为它必须跟踪很多对话吗?
每个对话都有一个终生计时器。如果您当时没有指定生命周期,BEGIN DIALOG
那么它们的默认生命周期约为 68 年(2147483647 秒)。未完成的端点必须在整个生命周期中保留。这会消耗行,sys.conversation_endpoints
因此最终您的磁盘将填满。不仅如此,每个活动的对话端点也需要内存(可能由 tempdb 备份),并且在数据库启动时,必须扫描所有对话以确定任何待处理的操作(计时器、生命周期)。
总而言之,根本没有理由不发出你的一面END DIALOG
。