首页 文章

neo4j进口放缓

提问于
浏览
3

我正在尝试使用cypher将大约500,000个节点的中等数据集导入neo4j . 我在带有SSD的3.4 GHz i7 iMac上本地运行neo4j-community-2.0.0-M05 .

我正在将密码传递给neo4j shell,将每40k行包装到一个事务中 .

我正在使用标签,在开始之前,我在每个标记节点的一个属性上创建了索引 .

当我昨晚离开时,MATCH CREATE UNIQUE每人约需15ms . 今天早上他们大约需要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之外的其他一些方法来导入这些数据吗?

1 回答

  • 2

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

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

    使用cypher,我在导入之前24小时运行导入 . 使用java导入工具,使用neo4j-community-2.0.0-M06整个导入需要11秒 .

    结论:不要试图写出密码来导入大块数据 . 如有必要,花一小时清理数据,然后导出到CSV并使用java批量导入工具 .

相关问题