有什么理由在Neo4j只读事务上调用`tx.success()`吗?

时间:2015-04-21 20:21:53

标签: neo4j neo4j-java-api

我使用Java API来提高曾经是一个昂贵的Cypher查询的性能。我刚才正在重构并注意到我正在呼叫tx.success(),即使我没有更改任何数据。当没有任何改变或无关紧要时,标记交易成功是否有任何性能下降,因为它知道实际提交没有任何内容?

1 个答案:

答案 0 :(得分:5)

我确实潜入了Java Api,并在需要这种情况的情况下立即运行。

如果您使用嵌套事务并且外部代码调用读取操作而不执行tx.success,那么当外部事务将尝试提交(tx.success())时,您的内部事务(您的读取)将tx标记为未成功完成)并且数据库将引发异常。