提升性能
一般原则
-
由于 Spark 擅长并行计算,因此任何非图相关的繁重计算都应该在 Spark 层完成,而不是在 Neo4j 上使用 Cypher® 进行。
-
根据您的应用程序调整Spark 和 Neo4j参数。
-
在使用积极的并行处理或大批量大小之前,请适当调整 Neo4j 实例的大小。
-
尝试使用更大的批处理大小(确保批处理保持在 Neo4j 配置的堆内存范围内)。一般来说,批处理越大,到 Neo4j 的整体吞吐量就越快。
-
使用正确的索引和约束
在 Neo4j Cypher 级别,非常常见的是以生成 MERGE
查询的方式使用 Spark 连接器。在 Neo4j 中,这会根据某些“键”查找节点,然后仅在该节点尚不存在时创建它。
强烈建议在用作 node.keys 、relationship.source.node.keys 、relationship.target.node.keys 或其他类似键选项一部分的任何图属性上声明索引或约束。
|
性能不佳的一个常见原因是编写生成 MERGE
Cypher 或以其他方式尝试在 Neo4j 中查找数据而没有适当的数据库索引的 Spark 代码。在这种情况下,Neo4j 服务器最终会查看比满足查询所需更多的数据,从而导致性能下降。