【发布时间】:2011-05-04 21:36:28
【问题描述】:
所以我正在使用 Spring 和 Hibernate 构建一个 Java webapp。在应用程序中,userw 可以向对象添加点,我想计算点数以订购我的对象。对象也存储在数据库中。并且希望成百上千的人同时给这些物品打分。
但是我如何计算积分并同时将它们保存在数据库中?通常我只会在我的对象上有一个属性,然后增加分数。但这意味着我必须使用悲观事务锁定数据库中的数据,以防止并发问题(在另一个线程已经完成更改的一半时读取点的数量)。这可能会使我的应用程序变得更慢(至少我认为会这样)。
另一种解决方案是将给定点的数量存储在关联对象中,并将它们分别存储在数据库中,同时在“小”同步块或其他东西中计算内存中的点。
在处理同一对象上的许多并发操作时,哪种解决方案对性能的影响最小。或者有没有其他合适的解决方案?
【问题讨论】:
标签: database concurrency transactions synchronization