mssql的队列插入和数据池触发插入 是怎么实现的
想对大数据量的业务下优化服务器, 搜了一些资料,
得到的答案是用异步+队列 也有说用数据池的, 但是具体怎么做 我没有找到
想请教一下具体做法
[解决办法]
sql broker你去搜搜,好像是用这个来实现队列的
[解决办法]
就你发的网址就是了.
你要做的是.建立一个发送队列和接收队列.
在插入的过程
BEGIN DIALOG CONVERSATION @conversationHandle
FROM SERVICE InitiatorService
TO SERVICE 'TargetService'
ON CONTRACT HelloWorldContract
BEGIN DIALOG 开启一个会话
从InitiatorService 发送到 'TargetService'
发送的消息是HelloWorldContract 协议吧
这样返回一个 @conversationHandle句柄
就可以用send 命令发送 HelloWorldContract格式的消息到 目标服务'TargetService'
SEND ON CONVERSATION @conversation_handle
MESSAGE TYPE HelloWorldMessage
(@message) ;
然后可以通过SELECT * FROM [dbo].[TargetQueue]
查询到队列的内容
用RECEIVE 语句,接收队列的信息
RECEIVE
TOP(1)
@conversation_handle = conversation_handle,
@message_type_name = message_type_name,
@message_body =
CASE
WHEN validation = 'X' THEN CAST(message_body AS XML)
ELSE CAST(N'<none/>' AS XML)
END
FROM [dbo].[TargetQueue]
WHERE conversation_group_id = @conversation_group_id ;
这个接收和处理的过程可以写成一个存储过程设为'TargetService'的处理过程,就可以在队列有信息的时候触发这个存储过程进行处理.