Neo4j Bolt 中的 Session.run() VS transaction.run()

Session.run() VS transaction.run() in Neo4j Bolt

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

我的知识是:

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

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

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

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