该应用程序基于Oracle3.5和.Net Standard Edition 11G数据库,其中一个表包含200多万条记录。记录的大小不是很大。这些记录有一个类型为Char(1)的状态列。根据状态,流程挑选要处理的记录,并在完成后更新状态。一条记录按串行顺序经过多个进程,即A -> B -> C.....假设这些进程作为windows服务在不同的机器上运行。
最简单的解决方案是所有进程每10分钟运行一次,并在表中查询具有各自状态的记录。大约有15个进程并行运行以检查特定状态。这可能不是一个有效的解决方案。进程之间的一点时间延迟不是问题。
我正在考虑的另一个选择是为每个进程定义一个队列。一旦进程完成,它就会将记录添加到下一个队列。我可以在这里使用Oracle队列。
对于这种情况,您认为哪个选项更好?该解决方案不应影响数据库的性能,因为网站也在数据库上运行并访问相同的表。有没有其他更好的方法?.Net工作流框架适合在这里提供开发简单性吗?
发布于 2009-09-25 11:36:52
这听起来像是一个没有用户交互的自动化批处理过程,在这种情况下,性能最好的解决方案将是没有.Net代码的100% PL/SQL。它可以使用DBMS_SCHEDULER或DBMS_JOB来调度执行。
https://stackoverflow.com/questions/1476605
复制相似问题