如何避免多个线程在单个数据库行上进行合并

时间:2015-06-18 19:26:55

标签: multithreading oracle jms

我们正在使用(JMS,Weblogic和Oracle后端)构建交易系统,其中多个交易事件创建日记帐分录,这些日记帐分录合并到数据库表中的单个位置行。这意味着多个JMS使用者创建了多个日记帐分录,所有这些日记帐分录都争先恐后地获取单个位置行以进行更新。它不是一个可扩展的设计,因为无论我们有多少消费者,他们都会在等待锁定单个oracle行时被阻塞太多次。 (因为我们在大多数活动中都有一些不同的立场)。

作为替代方案,我们可以继续插入日记帐分录。日记条目中的每个插入都可以作为事件进一步发布到队列中,并且消费者可以调用oracle视图(运行聚合查询)来向下游发布内容。

第二个解决方案还有其他问题,例如计算oracle视图所需的时间,因为日记条目的数量会随着时间的推移而不断增长。

还有其他方法可以设计吗?

0 个答案:

没有答案