有什么理由在 Neo4j 只读事务上调用 `tx.success()` 吗?
Any reason to call `tx.success()` on a Neo4j read-only transaction?
我正在使用 Java API 来提高曾经昂贵的 Cypher 查询的性能。我刚才正在重构并注意到我正在调用 tx.success()
,即使我没有更改任何数据。当什么都没有改变时将事务标记为成功是否有任何性能下降,或者这无关紧要因为它知道没有什么可以实际提交?
我也深入研究了 Java Api,并在需要时立即 运行。
如果您使用嵌套的 t运行sactions 并且有外部代码调用您的 read 操作,但没有执行 tx.success,那么当外部 t运行saction 将尝试提交(tx.success()),您的内部 t运行saction(您的读取)会将 tx 标记为未成功完成)并且数据库将引发异常。
我正在使用 Java API 来提高曾经昂贵的 Cypher 查询的性能。我刚才正在重构并注意到我正在调用 tx.success()
,即使我没有更改任何数据。当什么都没有改变时将事务标记为成功是否有任何性能下降,或者这无关紧要因为它知道没有什么可以实际提交?
我也深入研究了 Java Api,并在需要时立即 运行。
如果您使用嵌套的 t运行sactions 并且有外部代码调用您的 read 操作,但没有执行 tx.success,那么当外部 t运行saction 将尝试提交(tx.success()),您的内部 t运行saction(您的读取)会将 tx 标记为未成功完成)并且数据库将引发异常。