parallel-processing - 应该在数据库调用中使用 Parallel.ForEach 吗?

标签 parallel-processing task-parallel-library

我有一个 Foo ID 列表。我需要为每个 ID 调用一个存储过程。

例如

Guid[] siteIds = ...; // typically contains 100 to 300 elements
foreach (var id in siteIds)
{
   db.MySproc(id); // Executes some stored procedure.
}

每个调用都非常独立于其他行,这在数据库中不应该引起争议。

我的问题:使用 Parallel.ForEach 并行化是否有益?或者数据库 IO 是否会成为瓶颈,更多线程只会导致更多争用?

我会自己测量它,但是,在我的测试环境中很难测量它,因为数据和负载比我们真实的网络服务器小得多。

最佳答案

出于好奇,为什么要使用 Parallel.ForEach 对其进行优化并生成线程/打开连接/传递数据/获取每个项目的响应而不是编写一个简单的“sproc”,可以使用 ID 列表而不是单个 ID?

从第一眼看上去,它应该会给你带来更明显的改进。

关于parallel-processing - 应该在数据库调用中使用 Parallel.ForEach 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4855234/

相关文章:

linux - Bash:在多个内核上运行相同的程序

c# - 检查是否使用 Moq 调用了 CancellationTokenSource.Cancel()

c# - 多线程、lambdas 和局部变量

c# - 以并行方式查找排列

c# - 是否有 CHESS 的替代方案来测试使用任务并行库编写的程序

c# - 与巨大的数据流异步

python - 并行执行列表中每个对象中的方法

ruby - 我们可以在 Ruby 中并行运行多线程吗?

parallel-processing - 根据标志对 mpi 进程进行分组

c++ - Rcpp 并行 : RMatrix and RVector arithmetic operations