我使用Neo4j的BatchInserter在大图中插入不同数量的关系(5亿+节点)
速度极快,每分钟插入1000多个关系。
但即使只插入少量关系,关机也很慢,需要一个多小时。
查看org.neo4j.unsafe.batchinsert.BatchInserterImpl.shutdown()
内部,我发现它有很多操作,包括repopulateAllIndexes()
我不知道关闭的哪一部分需要这么长时间,但如果我知道新关系不会影响任何索引这一事实,是否值得继承BatchInserterImpl
并跳过其中一些关机操作?
答案 0 :(得分:0)
是的,BatchInserter并没有经过很长时间来优化关闭过程,而不仅仅是重建受影响的索引。有一个布尔值控制它,它只是在任何节点上是否有任何标签被更改。如果是,则触发索引的完全重建(在一个商店扫描之外)。正如你所提到的,这可能会得到改善。