提升性能

一般原则

  • 由于 Spark 擅长并行计算,因此任何非图的繁重计算都应在 Spark 层完成,而不是在 Neo4j 上使用 Cypher®

    • 在加载到 Neo4j 之前,尽可能进行数据质量修复;这包括删除缺失记录、更改属性数据类型等。

    • 尝试不同的数据建模策略。

    • 了解Spark 优化的实施方式。

  • 根据您的应用程序调整Spark 和 Neo4j 参数。

    • 在使用激进的并行度或大批量之前,请适当调整 Neo4j 实例的大小。

    • 尝试更大的批量大小(确保批量保持在 Neo4j 配置的堆内存范围内)。一般来说,批量越大,到 Neo4j 的总体吞吐量就越快。

使用正确的索引和约束

在 Neo4j Cypher 层面,通常会以生成 MERGE 查询的方式使用 Spark 连接器。在 Neo4j 中,这会通过某个“键”查找节点,如果该节点不存在,则仅创建它。

强烈建议对您用作 node.keysrelationship.source.node.keysrelationship.target.node.keys 或其他类似键选项一部分的任何图属性断言索引或约束。

性能不佳的一个常见原因是编写生成 MERGE Cypher 的 Spark 代码,或者在没有适当数据库索引的情况下尝试在 Neo4j 中查找数据。在这种情况下,Neo4j 服务器最终会检查比满足查询所需多得多的数据,导致性能下降。

© . All rights reserved.