我有一个包含两个特定节点类型的数据库:GenomicRange
和GeneModel
。 GenomicRange
节点集包含约8000万个节点,而GeneModel
包含约45,000个节点。
GenomicRange
节点包含属性posStart
,该属性存储为整数。 GeneModel
节点包含两个特定的整数属性geneStart
和geneEnd
。这些坐标位于两种节点类型(例如chromosome
至1
)的10
属性上。
如果(1)它们的染色体属性匹配,(2)如果{{1,则我想做的是在两个节点之间有效地有效地建立关系(例如[:RANGE_WITHIN]
)。 }}中的{}值位于posStart
节点上的GenomicRange
和geneStart
属性的范围内。
我目前遇到的问题是查询/构建过程非常缓慢。有没有一种方法可以优化此代码?
感谢您的帮助!
geneEnd
答案 0 :(得分:0)
一些建议:
在用于比较的属性上添加索引。
这里:posStart,染色体,geneEnd,geneStart。
`CREATE INDEX ON :GenomicRange(chromosome)`
增加堆内存::创建索引会增加内存使用量,因此将堆大小增加到内存的50%。您可以在neo4j.conf
文件中进行配置。
增加页面缓存::缓存大小越大,内存中缓存的数据越多,这将有助于避免昂贵的磁盘访问。
了解有关内存配置here的更多信息。
PS 如果增大堆大小后仍然出现内存不足错误,请在第1行和第3行交换GenomicRange
和GeneModel
或使用{ {1}}定期创建关系。