5

正在做几个测试。

基于 Wes 等的一些很好的建议,我调整了一些没有缓存的 neo4j 属性,以便在多线程环境中进行大规模插入,性能还不错。

但是,当我引入索引(在节点上)时,性能会下降很多。差异很容易达到5倍。是否有配置设置可以让它变得更好?

提前致谢,

萨钦

Neo4j 版本 - 1.8.1;JVM - 1.6

4

2 回答 2

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 索引与事务紧密耦合(这是一件好事),除了优化基础架构以获得最佳写入性能之外,您无能为力。

于 2013-03-12T23:04:03.897 回答
0

以防万一这个额外的答案仍然对在 Linux 下的 ext4 文件系统上运行 Neo4j 的任何人有用:

通过交易一些交易安全性(在 USV/电池缓冲系统或笔记本电脑上可以忽略不计),写入性能可以提高 10-15 倍!

在最近的博客文章中阅读更多内容:http: //structr.org/blog/neo4j-performance-on-ext4

于 2013-12-11T01:11:35.910 回答