首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Java锁实现数据库并发

使用Java锁实现数据库并发
EN

Stack Overflow用户
提问于 2012-10-08 22:52:00
回答 1查看 1.1K关注 0票数 1

我有下面的场景。我有两张桌子。一个存储多个值,这些值是事务的计数器。通过java应用程序,第一个表值被读取、递增和写入第二个表,新值被写回第一个表。显然,这有可能出错,因为它是一个多用户系统。在Java中,我解决这个问题的解决方案是提供锁,这些锁在任何一个表上都可以采取任何操作之前,都应该被询问。这些锁( ReentrantLocks )是静态的,表1中的每一列都有一个锁,因为这些值是完全独立的。

这是推荐的方法吗?

干杯。

EN

回答 1

Stack Overflow用户

发布于 2012-10-09 00:22:17

虽然我同意@pst的一些观点,但我要说的是,这要看情况而定。

如果事件的顺序基本上是“面向SQL的”,而且可能总是这样,那么您也可以在数据库级别(实际上,可能通过使用事务隐式地)进行锁定。

但是,如果在应用程序层中存在或计划构建重要的数据操作逻辑(一般情况下或在此特定操作的情况下),那么在应用程序级别锁定可能更合适。(实际上,您可能仍然会在事务中运行SQL,这样实际上您就可以在这两个级别上进行锁定。)

我认为多个VM的问题本身并不一定是一个引人注目的问题,因为它依赖于DB级别的锁定。如果您有多个服务器应用程序访问数据库,那么无论如何,您都希望建立一个定义良好的协议,以便在何种情况下并发访问数据。在一个复杂程度适中的系统中,无论如何,你都希望建立一个对数据进行定期健全检查的系统。(即使您的服务器应用程序在100%的情况下表现良好,后端技术支持永远不会在应用程序之外的数据库上运行一些杂乱的SQL .?)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12790593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档