易失性neo4j数据集的速度降低

时间:2014-03-17 11:41:20

标签: performance neo4j cypher

我在我的一个项目中使用neo4j,并注意到我的本地数据库(用于运行测试套件)随着时间的推移变得越来越慢。这是一个低优先级的问题,因为它目前在实际使用期间似乎没有发生(在运行巨大的测试套件之外),但是为了改善neo4j的目标,我认为最好发布它:)

目前看来,这些是我的发现:

  1. 速度降低与执行的测试量(因此,创建/删除的节点数量)相关联。
  2. db大小增加,即使每个测试套件在使用后清除数据库*(表示仍然存在死节点)
  3. 删除graph.db文件解决了问题(进一步证明了死节点理论)
  4. 虽然问题可以通过测试数据库的可接受方式轻松解决,但我仍然担心此症状对于具有易失性数据的长时间运行数据库的生成影响。当然,拥有一个数据库,其数据与测试数据一样易变,但是它应该不是问题。至少应该有一个生产就绪的解决方案(我正在考虑死节点修剪),但是我在文档中找不到任何类型的内容。

    这是一个已知问题吗?我找不到任何类似问题的参考。如果能找到(并解决)实际问题,我会非常感谢您找到确切原因的任何帮助,因为我想提供补丁。


    *)使用两个单独的cypher命令清除数据库(以防止偶尔出现issue 27)以下cyphers按顺序运行:MATCH ()-[r]-() DELETE r MATCH (n) DELETE n

1 个答案:

答案 0 :(得分:1)

我也经历过同样的行为。我们在整个数据库上每15分钟运行一次繁重的计算脚本。这产生了巨大的(logical) log files,似乎降低了性能。为了减少日志文件,您需要设置keep_logical_logs属性。对于测试,以下可能是一个很好的设置:

keep_logical_logs=24 hours

对于测试,如果嵌入式数据库是一个选项,您还需要考虑ImpermanentantGraphDatabase。你可以用

来搞定
<dependency>
    <groupId>org.neo4j</groupId>
    <artifactId>neo4j-kernel</artifactId>
    <version>2.0.1</version>
    <classifier>tests</classifier>
</dependency>