【问题标题】:Neo4j load csv performance issuesNeo4j 加载 csv 性能问题
【发布时间】:2020-05-18 10:28:50
【问题描述】:

我正在尝试在 neo4j 4.0.4 企业版 CSV 文件中使用 load csv 命令摄取数据,该文件有 15k 行和 9 列 下面是我的加载 csv 命令:

USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM "file:///data/csv_files/NA/admin_2020-05-18_10-19-23_481000/Relationships.csv" 
AS row WITH row WHERE row.`RELATIONSHIP_NAME` IS NOT NULL OR row.`ASSET_1_ID` IS NOT NULL OR row.`ASSET_2_ID` IS NOT NULL 
MERGE (relationship:Relationship{ name:row.`RELATIONSHIP_NAME`, asset2_id:row.`ASSET_2_ID`, asset1_id:row.`ASSET_1_ID` }) 
SET relationship += { name:row.`RELATIONSHIP_NAME`, asset2_id:row.`ASSET_2_ID`, asset1_id:row.`ASSET_1_ID` , relationship_status:row.`RELATIONSHIP_STATUS`, relationship_type_id:row.`RELATIONSHIP_TYPE_ID`, relationship_type:row.`RELATIONSHIP_TYPE`, asset1_type:row.`ASSET_1_TYPE`, asset1_id:row.`ASSET_1_ID`, asset2_type:row.`ASSET_2_TYPE`, asset2_id:row.`ASSET_2_ID`, relationship_comments:row.`RELATIONSHIP_COMMENTS`, modified_at: TIMESTAMP() }

并且没有正在创建的关系,但完成过程大约需要 7 分钟,而且我确实解释了没有急切操作的查询。

dbms.memory.pagecache.size=12100m
dbms.memory.heap.max_size=11900m
dbms.memory.heap.initial_size=11900m

我在这里遗漏了什么,或者有什么方法可以优化查询。我将如何提高性能? 提前致谢

【问题讨论】:

    标签: performance neo4j load-csv


    【解决方案1】:

    您的问题可能也出在合并中?一次拥有许多属性。建议合并单个属性,然后添加其他属性。另一件事是将要使用的属性的索引添加到MERGE 上。 不过,您的查询看起来很奇怪。看起来您正在设置与 MERGE 相同的属性。如果没有任何其他信息,我会将您的查询更改为:

    USING PERIODIC COMMIT LOAD CSV WITH HEADERS FROM "file:///data/csv_files/NA/admin_2020-05-18_10-19-23_481000/Relationships.csv" 
    AS row WITH row WHERE row.`RELATIONSHIP_NAME` IS NOT NULL OR row.`ASSET_1_ID` IS NOT NULL OR row.`ASSET_2_ID` IS NOT NULL 
    CREATE (relationship:Relationship) 
    SET relationship += { name:row.`RELATIONSHIP_NAME`, asset2_id:row.`ASSET_2_ID`, asset1_id:row.`ASSET_1_ID` , relationship_status:row.`RELATIONSHIP_STATUS`, relationship_type_id:row.`RELATIONSHIP_TYPE_ID`, relationship_type:row.`RELATIONSHIP_TYPE`, asset1_type:row.`ASSET_1_TYPE`, asset1_id:row.`ASSET_1_ID`, asset2_type:row.`ASSET_2_TYPE`, asset2_id:row.`ASSET_2_ID`, relationship_comments:row.`RELATIONSHIP_COMMENTS`, modified_at: TIMESTAMP() }
    

    【讨论】:

    • 非常感谢您的回复..它起作用了,现在过程只需要 2 秒,这是一个巨大的改进,但是当我们一次又一次地摄取相同的数据时,它会创建重复的节点并且它会覆盖相同的节点?如果它创建了重复节点,那可能是一个大问题..有没有办法克服这些重复?
    猜你喜欢
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多