在Neo4j Bolt

时间:2016-09-16 07:13:10

标签: neo4j neo4j-bolt

Neo4j Bolt驱动程序中的Session.run()和transaction.run()有什么区别?

我的知识是:

Session.run() will execute a single statement    
transaction.run() executes multiple statements.

这些是我所知道的正确信息。所有其他差异是什么?

1 个答案:

答案 0 :(得分:12)

Session.run()实际上会创建一个事务,执行该语句并提交事务。 Transaction.run()将保持事务处于打开状态,直到您提交它为止,但仍将发送并解释和执行该语句,并返回结果。但是,任何更改实际上都不会持久保存到数据存储区中,并且对于事务外的查询将不可见。您必须将事务标记为成功并提交它,否则它将被回滚。

你应该尽量不使用交易;打开事务可防止更改索引和约束并增加内存使用量。使用事务的唯一原因是回滚潜力;如果您想查看查询的结果,并根据这些结果撤消它,则使用事务。否则使用会话。