【发布时间】:2013-10-15 16:25:15
【问题描述】:
我正在尝试使用 cypher 将大约 500,000 个节点的中等数据集导入 neo4j。我在带有 SSD 的 3.4 GHz i7 iMac 上本地运行 neo4j-community-2.0.0-M05。
我将密码传送到 neo4j shell,将每 40k 行包装成一个事务。
我正在使用标签,在开始之前,我为每个标签节点的一个属性创建了索引。
当我昨晚离开时,MATCH CREATE UNIQUE 每次大约需要 15 毫秒。今天早上他们用了大约 6000 毫秒。
慢查询看起来像这样
MATCH n:Artifact WHERE n.pathId = 'ZZZ' CREATE UNIQUE n-[r:DEPENDS_ON]->(a:Artifact {pathId: 'YYY'}) RETURN a
1 row
5719 ms
pathId 已编入索引。
我知道这是一个里程碑式的构建,可能没有优化性能。但我的导入还不到三分之一,而且速度越来越慢。
我应该看看除了 cypher 之外的其他方法来导入这些数据吗?
【问题讨论】:
-
您是否尝试过使用带有参数的批处理插入器,请参阅github.com/jexp/batch-import ?我认为模式匹配可能没有优化。能够访问您的设置进行分析会很棒。