排队解决方案通过多个进程处理记录

时间:2009-09-25 10:45:02

标签: .net performance oracle queue

该应用程序位于.Net 3.5和Oracle Standard Edition 11G数据库中,其中一个表有超过200万条记录。记录大小并不大。记录具有Char(1)类型的Status列。根据状态,进程选择要处理的记录并在完成后更新状态。记录通过串行顺序的多个过程进行,即A - > B - > C .....假设这些进程在不同的机器上运行,如Windows服务

最简单的解决方案是所有进程每10分钟运行一次,并在表中查询具有相应状态的记录。大约15个并行运行的多个进程检查特定状态。这可能不是一个有效的解决方案。这个过程之间的时间滞后不是问题。

我正在考虑的另一个选择是为每个进程定义一个队列。一旦进程完成,它就会将记录添加到下一个队列。我可以在这里使用Oracle Queues。

您认为哪种方案更适合这种情况?该解决方案不应影响数据库的性能,因为网站也在数据库上运行并访问同一个表。还有其他更好的方法吗? .Net Workflow框架是否适合这里提供开发简易性?

1 个答案:

答案 0 :(得分:1)

听起来这是一个没有用户交互的自动批处理过程,在这种情况下,性能最佳的解决方案是100%PL / SQL,没有.Net代码。它可以使用DBMS_SCHEDULER或DBMS_JOB来安排执行。