使用不同的线程调用相同的存储过程?

时间:2012-08-03 06:59:32

标签: c# sql multithreading

有一个存储过程可以执行非常繁重的过程。它在迭代大约30个表时重新生成sql insert脚本,在完成该过程后,它开始将这些脚本插入到名为X的表中。该过程大约需要20分钟,这是不可接受的。你必须要知道的最后一件事是由在.NET上创建的web方法调用的过程。

PS:表有索引。

以下是我的问题

  1. 我想使用多线程来解决问题。但不确定它是否会有所帮助?我将sp切成5块,同时从5个不同的线程调用它。我想知道这会有助于减少处理开始和结束之间的时间间隔吗?

3 个答案:

答案 0 :(得分:2)

这可能会起作用,因为不会阻塞或等待存储过程的其他部分完成。显然,您仍然受到服务器物理资源的限制。说实话,你要确定的唯一方法就是做到并衡量表现。

我会确保您准确地分析存储过程的每个部分的依赖关系,然后再次执行以确保。

祝你好运。

答案 1 :(得分:0)

您是否考虑过将大量插入带有索引的表格所带来的性能损失。如果您还没有这样做,请尝试在没有索引的表上插入流程的一部分并测量任何收益。如果它被证明是有益的,请编写索引创建脚本并在插入后运行它。

线程可能会有所帮助,但我的经验是优化sql进程可能会带来更多好处。我很想听听你的发现。

答案 2 :(得分:0)

我也尝试从多个线程的控制台应用程序调用相同的SP,但我没有看到我的SP正在并行运行。即使我使用线程多次调用它,它也会一个接一个地执行。我正在使用Sql server 2008,(快速版),我也在SQL Server 2008中配置了并行处理。但它没有并行运行。任何想法或建议将不胜感激。

由于 Venkat