加载csv合并性能

时间:2015-05-22 21:44:58

标签: neo4j load-csv

我在批量插入neo4j时存在性能问题。

我有一个400k行的csv文件,它产生大约350万行,我使用LOAD CSV命令,neo4j上有最新版本。

我注意到当我使用Create语句时,加载大约需要4分钟,而且根本没有索引 - 大约3.5分钟。

我的第一个问题是,这是否是正常的节点速率/分钟。

现在,我真正的问题是,出于数据完整性的原因,我需要使用合并,当我使用它时,它可能需要24小时,连同索引。

另外两个问题是:

建议使用LOAD CSV以获得最佳性能负载,

还有: 对于此性能问题,我该怎么办?

编辑:

这是查询:

 LOAD CSV WITH HEADERS FROM 'file:///import.csv' AS line FIELDTERMINATOR '|' 
 MERGE (session :Session { session:line.session })  
 MERGE (hit :Hit { key:line.key,date_time:line.date_time,session:line.session })  
 MERGE (user :User { id:line.user_id })   
 MERGE (session2 :Session2 { session2:line.session2 })  
 MERGE (country :Country{ name:line.country})   
 MERGE (tv :TV { name:tv.Model })  
 MERGE (transfer_protocol :Protocol { name:line.transfer_protocol })  
 MERGE (os :OS { name:line.os_name ,version:line.os_version, row_key:line.os_name+line.os_version}) 

示例:session_guid | hit_key_guid | useridguid | session2_guid | PANASONIC | TCP | ANDROID | 5.0

session,user,session2,country,tv,transfer_protocol和os都有唯一约束,而hit有一个索引

** session1和session2可以有很多匹配(1到100,平均5)   每个csv行的hit_key_guid不同

它运行得非常慢 - 非常强大的机器,每1000行最多可能需要10秒钟。

也使用分析器检查,没有“Eager

感谢

利奥尔

2 个答案:

答案 0 :(得分:2)

您应该共享数据模型,索引,LOAD CSV查询以及配置文件输出。你在使用PERIODIC提交吗?

确保您不会遇到热切问题,请参阅此处:

http://neo4j.com/developer/guide-import-csv/#_load_csv_for_medium_sized_datasets http://www.markhneedham.com/blog/2014/10/23/neo4j-cypher-avoiding-the-eager/

一般情况下,对于您的尺寸LOAD CSV的数据集,从10M行我可能会切换到import-tool

答案 1 :(得分:0)

服务器端代码似乎没有正确创建索引,一旦创建它们,负载就会以良好的性能完成