减少neo4j交易完成时间

时间:2013-08-02 12:19:30

标签: transactions neo4j database-performance

neo4j中transaction.finish()所需的所有因素取决于?

我正在使用neo4j进行Facebook图形构建。每个Node都包含一个包含以下内容的平均500个对象的列表:

4 Strings of max length 20 chars
1 doubles 
1 long
1 Date
1 boolean

Relationship列出了平均20个此类对象。

大约有3,00,000个节点和相同的总关系顺序。

对于这样的节点,如果我更新大约300个节点,我发现它的更新大约需要50秒。和交易时间约10分钟。内存利用率约为2.5GB,处理器:双核2.93GHz。

此交易完成时间看起来太高。

我可以就如何缩短交易结束时间获得任何建议吗?

修改

我发现了一个如此重的节点,其所有属性组合在一起作为字符串给出了一串长度为15650993个字符的字符串。

1 个答案:

答案 0 :(得分:1)

在tx.finish()中,更改将写入逻辑日志并强制下载到磁盘。然后将更改应用于数据库存储文件,这些文件很可能不会强制将任何内容下载到磁盘,而是更新这些文件的内存映射部分。除了现在然后逻辑日志被轮换,并且对数据库存储文件的所有更改也被强制转换为磁盘。

关于你的大字符串属性,我不会指望即使15Mb也几乎那么慢。你有没有对它进行任何剖析?