0

我正在对单个 memgraph 实例执行混合查询(读取/写入/更新/删除)。为此,我使用 Neo4j 的 Java 客户端,我当前使用的所有 API 都是来自驱动程序的同步 API。

在我的情况下,查询的性质是我可以同时执行它们而没有副作用。为了获得更好的性能,我将并行触发查询。我得到的错误是针对CREATE我在两个节点之间创建边缘的操作。这是一致的,因为我尝试多次运行相同的设置并且每次,所有查询都会通过,除非它在这个创建边缘阶段崩溃。

查询参考:

OPTIONAL MATCH (node1) WHERE id(node1) = $nodeId1
OPTIONAL MATCH (node2) WHERE id(node2) = $nodeId2
CREATE (node1)-[:KNOWS]-> (node2)

我无法找到有关任何此类错误的任何文档。请指点我这样的一些文档或任何解决方法,如果其他查询正在操作相同的对象,我可以使用这些解决方法让 memgraph 暂停查询。

我正在考虑的一种方法是对任何此类失败的查询实施重试,但我正在寻找一种更清洁的方法。

PS 我之前在 Neo4j 上运行相同的设置并没有遇到任何问题。

4

1 回答 1

4

是的,在出现此错误的情况下,代码应重试查询。我认为在 Neo4j 中可能会发生类似的问题,但是由于 Memgraph 对锁定更加乐观,因此有时错误可能会更频繁地发生。通常,正确的方法是针对这种情况实施错误处理。

于 2021-03-10T17:33:20.700 回答