我正在尝试将一组相对较大的节点插入到neo4j数据库中。我有大约一百万个节点。
最初的 100,000 个节点插入得相当快。然而,速度逐渐下降。在大约 300,000 个节点之后,插入每个节点需要一分钟多的时间。
public void writeXmlElements(List<XmlElement> elements){
GraphDatabaseService graphDb = Neo4jDatabaseHandler.getGraphDatabase();
int count = 0;
try ( Transaction tx = graphDb.beginTx() )
{
for (XmlElement element : elements) {
count++;
LOGGER.info("Processing "+count+" out of "+elements.size());
Node node = graphDb.createNode();
node.setProperty(XmlElements.NAME.getValue(), element.getTagName());
node.setProperty(XmlElements.VALUE.getValue(), element.getTagValue());
tx.success();
}
}
}
我做的非常简单,遍历了 100 万个项目的列表。
任何线索如何使它运行得更快?
如果要
插入大数据集,最好使用批量插入。参考这里
更多信息 : 这里 和 这里
此外,您还必须调整 neo4j 服务器配置以获得更好的性能。参考 : 这里