1

我想做这样的事情(红宝石,密码查询):

// 在节点 1 上获取写锁

// 一些先读后写的代码,例如:

results = neo.query("MATCH (n {id: 1}) RETURN n")
...
case results.size
  when 0
    neo.create_node(properties)
  when 1
    neo.update_node(results.first, properties)
...

// 释放节点 1 上的写锁

根据文档,http ://docs.neo4j.org/chunked/stable/transactions-isolation.html :

默认情况下,除非当前事务中存在本地修改,否则读取操作将读取最后提交的值。默认隔离级别与 READ_COMMITTED 非常相似:读取不会阻塞或占用任何锁,因此可能会发生不可重复读取。可以通过手动获取读写锁来实现更强的隔离级别(如 REPETABLE_READ 和 SERIALIZABLE)。

http://docs.neo4j.org/chunked/stable/transactions.html

可以手动获取节点和关系上的写锁以实现更高级别的隔离(SERIALIZABLE)。

但是没有任何地方提到如何获取锁或如何更改隔离级别。

4

1 回答 1

2

目前不支持READ_COMMITTED通过 REST API 覆盖默认隔离级别。只有使用嵌入在 Java 应用程序中的 Neo4j 才能实现手动覆盖隔离级别。

我们将在您引用的文档页面中添加一个注释,以使其更加清晰。

于 2014-09-18T06:53:20.920 回答