有没有理由在Neo4j只读事务上调用'tx.success()'?

有没有理由在Neo4j只读事务上调用'tx.success()'?,neo4j,neo4j-java-api,Neo4j,Neo4j Java Api,我正在使用JavaAPI来提高曾经非常昂贵的密码查询的性能。我刚才正在重构,注意到我正在调用tx.success(),尽管我没有更改任何数据。在没有任何更改的情况下,将事务标记为成功是否有任何性能方面的缺点?或者,如果事务知道实际上没有什么可提交的内容,那么标记事务是否无关紧要?我也深入研究了Java Api,并在需要时立即运行了该Api 如果您使用嵌套事务,并且外部代码调用的read操作未执行tx.success,则当外部事务尝试提交(tx.success())时,您的内部事务(您的读取)将标

我正在使用JavaAPI来提高曾经非常昂贵的密码查询的性能。我刚才正在重构,注意到我正在调用
tx.success()
,尽管我没有更改任何数据。在没有任何更改的情况下,将事务标记为成功是否有任何性能方面的缺点?或者,如果事务知道实际上没有什么可提交的内容,那么标记事务是否无关紧要?

我也深入研究了Java Api,并在需要时立即运行了该Api


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

Ah!这是一个很好的观点。我希望我能将多个答案标记为正确,因为我觉得我们会得到更多的响应。我刚才在查看源代码时注意到,当您调用
tx.success()
,它会触发一个事件,通知订阅已关闭事务的任何人。如果您有任何插件在tx完成时执行操作,它们将被触发,因此这可能是执行或不执行操作的原因,具体取决于您的数据库和插入的内容。