Gov*_*tri 3 java-api neo4j spring-data-neo4j
我正在使用Embedded JavaAPI来实现我的实时应用程序.当一个事务被锁定数据库时,我的另一个ajax调用抛出数据库实例已被其他进程锁定的错误.大部分时间我的电话都是只读的.所以我的问题是:Neo4J JavaAPI中是否存在任何方法,以便我可以将事务锁定为只读,以便其他请求可以从DB获取数据.
dbFactory = new GraphDatabaseFactory();
db= dbFactory.newEmbeddedDatabase(DB_PATH);
tx = db.beginTx();Run Code Online (Sandbox Code Playgroud)
所以在这个db.beginTx()我可以告诉Neo4j它是一个只读模式或类似的东西.
谢谢,
不幸的是,没有这样的方法.但事实上 - 它并不需要.
读锁:它们是"共享的".如果一个事务从节点读取数据,那么其他事务也可以这样做.
写锁:它们是"独占的".当执行写入锁定时,所有事务将等待,直到该锁定将被重新启动,然后才进一步继续.如果另一个事务在节点上具有读锁定,那么写锁定将等待该节点"空闲".
在正常情况下 - 您不应该收到任何错误.
有可能得到DeadlockException(更多信息),但这是罕见的情况.如果您不使用自己的同步方法,则不会看到此类异常.
编辑:
您应确保应用程序中只有一个实例GraphDatabaseService.数据库实例完全是线程安全的.
| 归档时间: |
|
| 查看次数: |
3191 次 |
| 最近记录: |