正在进行几项测试。
根据Wes等的一些很好的建议,我调整了一些没有缓存的neo4j属性,可以在多线程环境中大规模插入,性能也不错。
但是,当我引入索引(在节点上)时,性能会下降很多。差异很容易5倍。是否有配置设置使其更好?
提前致谢,
萨钦
Neo4j版本 - 1.8.1; JVM - 1.6
答案 0 :(得分:4)
将节点(或关系)插入Lucene索引的成本很高。 Lucene是一个功能强大但功能强大的工具,专为全文/关键字搜索而设计。与裸数据库相比,它相当慢。
这就是大多数批量插入工具异步进行索引的原因,就像Michael的批量插入器一样:
http://jexp.de/blog/2012/10/parallel-batch-inserter-with-neo4j/
有些甚至会规避交易,或者直接写商店文件:
http://blog.xebia.com/2012/11/13/combining-neo4j-and-hadoop-part-i/
要提高性能,使用SSD磁盘可能有所帮助。但是由于Neo4j是一个完全ACID事务数据库,并且Lucene索引与事务紧密耦合(这是一件好事),除了优化基础结构以获得最佳写入性能之外,您还没有其他的工作。
答案 1 :(得分:0)
以防这个额外的答案仍然适用于Linux下ext4文件系统上运行Neo4j的任何人:
通过交易一些交易安全性(在USV /电池缓冲系统或笔记本电脑上可以忽略不计),写入性能可以提高10-15倍!
在最近的博文中了解详情:http://structr.org/blog/neo4j-performance-on-ext4