【问题标题】:neo4j import slowing downneo4j 导入速度放缓
【发布时间】: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 ?我认为模式匹配可能没有优化。能够访问您的设置进行分析会很棒。

标签: neo4j cypher


【解决方案1】:

我只想回答我自己的问题,以防其他人发现这个问题。感谢 Peter 建议批量导入项目。我用的是2.0 tree

我的工作流程最终是 (1) 将所有数据加载到关系数据库中,(2) 清理重复项,然后 (3) 编写脚本以将数据导出到 CSV 文件中。

使用 cypher,我将导入运行了 24 小时,然后才将其杀死。使用 java 导入工具,整个导入用 neo4j-community-2.0.0-M06 耗时 11 秒。

底线:不要费心尝试写出密码来导入大块数据。如有必要,花一个小时清理数据,然后导出为 CSV 并使用 java 批量导入工具。

【讨论】:

    猜你喜欢
    • 2015-05-22
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多