用于处理.Net中大量项目的体系结构

时间:2013-06-14 21:59:29

标签: .net sql-server performance parallel-processing

我需要创建一个不断检查数据库(SQL Server)的服务,以查找要处理的项目或消息。

问题在于,有时它需要尽快处理或发送大量此类项目(从30000到1000000),因为很可能很快就会有新的负载到达。

该过程不必在屏幕时间全部发送,每个项目都独立于其他项目,但它需要尽可能快地处理它们而不会挂断。

你可以建议我在.Net中建立一个架构,模型,模式,样本或类似的东西,包括从数据库中读取所有这些大量记录的部分,但最重要的部分是处理中的项目一种有效而强大的方式。

建议的解决方案可以扩展到同时在多台计算机上执行,以便在需要时进行负载平衡,这样会很好(但不是必要的)。

由于

1 个答案:

答案 0 :(得分:1)

我知道我打算打赌这个但是。

阅读30,000到1,000,000条记录非常快 所以我怀疑加工它们是瓶颈。

一种肮脏的方法是在事务中获取表锁并一次读出1000或10,000,并将它们标记为inProcess。
使用DataReader将它们读入List,这样您就可以尽快释放锁。

处理清单。

如果您需要验证它们是否为过程,请将其标记为 使用transactionID,您可以使用单个语句更新它们 每隔一段时间检查一下不清楚的inProcess项目。

获取下一组。

不漂亮,不是最有效的,但很容易扩展。

考虑处理的并行,以便在机器中进行缩放。