无论数据大小如何,了解Neo4j索引的使用情况,以便快速获取数据

时间:2018-01-14 17:55:38

标签: indexing neo4j cypher graph-databases

我正在尝试为psudo实时事件管道构建一个Neo4j摄取框架。每个事件在摄取之前都被分配了一个UUID4,并且这个UUID4字段用于标签上的唯一性约束:实体。所有事件都标有:实体及其他相关标签。对Neo4j的任何摄取都以此UUID字段上的合并作为前缀,以创建节点/边缘(如果它不存在)但阻止创建重复事件。我目前的理解是,由于在字段上创建的INDEX,此唯一性约束应允许在此UUID字段上以与neo4j中已存在的节点/边缘数不变的速度进行匹配(通过合并)。

不幸的是,这不是我在测试中看到的结果。随着neo4j中节点/边缘的数量增加,摄取速率成比例地减慢。

我是否错误地在我的目标中使用Neo4j INDEX来持续快速摄取?或者我只是误解了Neo4j INDEX?

非常感谢对这个问题的任何见解!

供参考,这是摄取查询的一般形式:

     UNWIND [...] as params
     WITH params.meta as meta, params.props as props
     MERGE (a :Entity {unique_id: meta.unique_id})
     SET a += props

UNWIND用于在一次交易中预先形成大量的多个事件摄取。

编辑: 这是个人资料

的屏幕截图

enter image description here

1 个答案:

答案 0 :(得分:0)

似乎增加页面缓存大小解决了这个问题。我相信我正在将数据交换到磁盘。