我正在寻找一种方法来轻松加载测试和基准测试我们的一些 SQL(使用 ADO.NET,使用 LINQ 或 PLINQ 没什么特别的),在高并行负载下运行时必须具有高性能。
我曾考虑使用新的并行扩展 CTP,特别是Parallel.For
/Parallel.ForEach
简单地运行 SQL 超过 10k 次迭代左右 - 但我无法找到任何关于这些优化的数据。
本质上,我担心因为数据库访问本质上是 I/O 绑定的,所以它不会产生足够的负载。有谁知道并行。如果它正在执行的任务不完全受 CPU 限制,是否足够智能以使用 > x 个线程(其中 x = CPU 数)?即它的行为方式与托管线程池类似吗?
如果是这样就更酷了!
编辑:正如@CVertex 在下面提到的,您可以独立设置线程数。有谁知道默认情况下并行库是否足够智能以在作业受 I/O 绑定时继续添加线程?