首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Neo4j事务锁定

Neo4j事务锁定
EN

Stack Overflow用户
提问于 2015-09-18 07:14:25
回答 1查看 4.5K关注 0票数 4

我使用嵌入式JavaAPI作为实时应用程序。当一个事务被锁定时,我的另一个ajax调用会抛出DB实例被其他进程锁定的错误。大多数时候我的电话都是只读的。因此,我的问题是: Neo4J JavaAPI中是否存在任何方法,以便我可以将事务锁定为只读,以便其他请求能够从DB获取数据。

代码语言:javascript
复制
dbFactory = new GraphDatabaseFactory();
db= dbFactory.newEmbeddedDatabase(DB_PATH);
tx = db.beginTx();

因此,在这个db.beginTx()中,我能告诉Neo4j它是只读模式或类似的模式吗?

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2015-09-18 08:06:31

不幸的是,没有这样的方法。但是,事实上,这是不必要的。

Neo4j锁定行为

读锁:它们是“共享的”。如果一个事务从节点读取数据,那么其他事务也可以这样做。

写锁:它们是“独占的”。当采取写锁时,所有事务将等待此锁被重新释放,然后才会继续进行。如果另一个事务已在节点上读取锁,则写锁将等待此节点“空闲”。

在正常情况下--您不应该收到任何错误。

有可能得到DeadlockException (更多信息),但这是罕见的情况。如果您不使用自己的同步方法,那么您将不会看到这样的异常。

编辑:

您应该确保应用程序中只有一个GraphDatabaseService实例。DB实例完全是线程安全。

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

https://stackoverflow.com/questions/32645985

复制
相关文章

相似问题

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