使用和不使用Index插入性能

时间:2013-03-12 21:31:44

标签: performance neo4j

正在进行几项测试。

根据Wes等的一些很好的建议,我调整了一些没有缓存的neo4j属性,可以在多线程环境中大规模插入,性能也不错。

但是,当我引入索引(在节点上)时,性能会下降很多。差异很容易5倍。是否有配置设置使其更好?

提前致谢,

萨钦

Neo4j版本 - 1.8.1; JVM - 1.6

2 个答案:

答案 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