5

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

我的知识是:

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

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

4

1 回答 1

22

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

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

于 2016-09-16T17:03:07.890 回答