【发布时间】:2010-09-30 16:46:20
【问题描述】:
我的问题集中在一些 Parallel.ForEach 代码上,这些代码过去可以正常工作,现在我们的数据库已经增长到原来的 5 倍,它几乎经常中断。
Parallel.ForEach<Stock_ListAllResult>( lbStockList.SelectedItems.Cast<Stock_ListAllResult>(), SelectedStock =>
{
ComputeTipDown( SelectedStock.Symbol );
} );
ComputeTipDown() 方法获取该交易品种的所有每日股票 tic 数据,并遍历每一天,获取昨天的数据并进行一些计算,然后将它们插入每天的数据库中。
当公式发生变化时,我们很少使用它来重新计算静态数据值。
例外是这样的:
我们正在访问的数据库有 16 gigs 的 ram,并且是双四核的,在我重新计算时没有人使用该系统。运行应用程序以重新生成代码的机器是一台具有 12 gigs ram 和超线程八核内核的笔记本电脑。所以没有明显的资源争用。
这是我对使用 .NET 4 和并行处理的尝试,所以我想知道我是否缺少某些东西。欢迎任何想法。
【问题讨论】:
-
有完整源代码的解决方案吗?
标签: sql-server multithreading parallel-processing linq-to-objects large-data-volumes