几个游标同时出现

时间:2014-06-20 06:29:19

标签: sql-server multithreading stored-procedures sql-server-2008-r2 cursor

有一个表#Costs (id,tree_id,date,value),其中包含调用sp exec sp @tree_id,@date,@value output的信息,以便计算tree_id标识的复杂服务例程。为了使用@value 光标 如何使多个游标使用相同的#Costs表?成本中的许多行 - > sp的光标运行时间很长。我不能转向内联函数或简化具有许多内部sp调用,临时插入/更新等的sp逻辑 做并行游标的方法是什么?我可以避免使用代理作业或Service Broker吗?

1 个答案:

答案 0 :(得分:1)

由于你在没有(IMO)足够细节的情况下提出了一个问题,因此我给出了一个我过去用于类似问题的一般解决方案。 基本上,我将工作负载划分为“桶”,然后调用多个存储过程来针对给定存储桶运行工作负载。在我的情况下,我使用单独的powershell实例来执行SP,因为我正在移动大量的日志文件,但代理作业也可以完成这项工作。只需要确保每个桶都可以使用。可以独立处理。

性能确实增加了,但要密切关注锁定和锁定活动以及其他瓶颈,在我的情况下,我发现有一个收益递减点,每桶大约1个核心似乎对我有效。

如果您愿意使用.NET,这是另一种选择,如果您不想在Agent中设置作业:SqlCommand.BeginExecuteNonQuery http://msdn.microsoft.com/en-us/library/7b6f9k7k%28v=vs.110%29.aspx