0

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

PS:表有索引。

这是我的问题

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

3 回答 3

2

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

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

祝你好运。

于 2012-08-03T07:04:22.677 回答
0

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

谢谢文卡特

于 2013-05-07T07:21:22.483 回答
0

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

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

于 2012-08-03T07:28:14.473 回答