我正在测试新的Neo4j PARALLEL运行时,无法通过我的测试,因为我的查询返回的结果与SLOTTED或PIPELINED不同(不同的元素顺序)。我是否需要以某种方式优化这些查询,以便它们在PARALLEL运行时正常工作?您是否有任何文档?或者,这些优化是不必要的,并且查询应该返回与SLOTTED或PIPELINED完全相同的结果?
此外,还有一个限制It is not possible to use the parallel runtime if a change has been made to the state of a transaction.
https://neo4j.com/docs/cypher-manual/current/planning-and-tuning/runtimes/reference/
不幸的是,我有很多情况下,我目前使用apoc.cypher.mapParallel2
在同一个事务中读取数据,我正在更新它。我想转换到PARALLEL运行时,但我无法这样做,由于这个限制。你打算在未来克服这个限制吗?
1条答案
按热度按时间wwodge7n1#
由于
Neo4j
的并行特性,这些情况是您所经历的原因。ORDER BY
子句PARALLEL runtime
不支持更新查询,例如使用CREATE, MERGE, SET, DELETE, or REMOVE
的查询-并行更新图形可能会导致冲突或不一致,使用相同的读取,使用Cypher Shell
中的:begin
和:commit
命令来控制事务或其他运行时,例如SLOTTED or PIPELINED
,用于写入查询。concurrency
问题或stale reads
,即您无法使用apoc.cypher.mapParallel2
过程读取在同一事务中已更新的数据-使用另一个过程,如apoc.cypher.doIt
,或将事务分为两部分。对于上面提到的情况限制,我怀疑他们是否有更新的计划。