我有一个 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/