我正在使用APOC来导入中等大小的图形(2K节点,2K关系)。我还使用了大约十二个触发器。当我使用GraphML导入过程导入图时,将图导入成功(导入速度非常快),然后查询挂起(创建触发导入的GraphImport节点的查询)。当我删除所有触发器时,导入就可以完成。我认为必须在导入过程返回之前完成触发器的处理????似乎是触发器导致了性能问题,或者可能是APOC中的错误。我可以禁用触发器,导入图形(不需要为此触发触发器),然后重新打开它们,但是我可能会错过那段时间内我真正想要的触发器。有人遇到过这个问题吗?
这是触发因素:
CALL apoc.trigger.add('import','UNWIND {createdNodes} AS n with n MATCH(n:GraphImport)CALL apoc.import.graphml(n.url,{batchSize:10000,readLabels:true,storeNodeIds :false,defaultRelationshipType:“ RELATED”})YIELD文件,源,格式,节点,关系,属性,时间RETURN null',{phase:'after'});
以下将执行导入但挂起:
创建(:GraphImport {url:“ ...”})...
删除所有其他触发器后,导入就可以完成。我并不期望触发器的处理必须在导致触发器完成的操作之前完成。我很确定这是如何工作的,因为如果触发器中有错误,您将在导致触发器被触发的操作上遇到异常。