优化许多neo4j节点之间的关系建立

时间:2019-04-25 14:12:58

标签: neo4j cypher

我有一个包含两个特定节点类型的数据库:GenomicRangeGeneModelGenomicRange节点集包含约8000万个节点,而GeneModel包含约45,000个节点。

GenomicRange节点包含属性posStart,该属性存储为整数。 GeneModel节点包含两个特定的整数属性geneStartgeneEnd。这些坐标位于两种节点类型(例如chromosome1)的10属性上。

如果(1)它们的染色体属性匹配,(2)如果{{1,则我想做的是在两个节点之间有效地有效地建立关系(例如[:RANGE_WITHIN])。 }}中的{}值位于posStart节点上的GenomicRangegeneStart属性的范围内。

我目前遇到的问题是查询/构建过程非常缓慢。有没有一种方法可以优化此代码?

感谢您的帮助!

geneEnd

1 个答案:

答案 0 :(得分:0)

一些建议:

在用于比较的属性上添加索引。

这里:posStart,染色体,geneEnd,geneStart。

`CREATE INDEX ON :GenomicRange(chromosome)`

增加堆内存::创建索引会增加内存使用量,因此将堆大小增加到内存的50%。您可以在neo4j.conf文件中进行配置。

增加页面缓存::缓存大小越大,内存中缓存的数据越多,这将有助于避免昂贵的磁盘访问。

了解有关内存配置here的更多信息。

PS 如果增大堆大小后仍然出现内存不足错误,请在第1行和第3行交换GenomicRangeGeneModel或使用{ {1}}定期创建关系。