Neo4j 搜索需要 30 分钟,同时使用 75%CPU 80GB 内存

Neo4j search takes +30 min while using 75%CPU 80GB of Ram

Neo4jShell 中的查询真的很慢,CPU 刚好达到 80% 左右,并且还在继续。我检查了架构:并有索引。计算机有 128GB 内存,Neo4j 使用 75GB 内存。数据库大小为 24GB。大约有 400 万个节点和 1.2 亿个关系

有谁知道 Neo4j 是否可以快速处理 24GB 数据的查询?

此查询需要 20 分钟才能return

MATCH (o:Foo {rbt:"local-foo"} )-[:val]->(j:Bar )

:schema
Indexes
  ON :Object(text)               ONLINE  
  ON :Foo(rbt)           ONLINE  
  ON :Bar(rbt)         ONLINE  
  ON :Property(prd)        ONLINE  
  ON :PI(rbt) FAILED  

No constraints

来自我的neo4j.properties:

# Default values for the low-level graph engine

neostore.nodestore.db.mapped_memory=2999M
neostore.relationshipstore.db.mapped_memory=15500M
neostore.relationshipgroupstore.db.mapped_memory=800M
neostore.propertystore.db.mapped_memory=390M
neostore.propertystore.db.strings.mapped_memory=330M
neostore.propertystore.db.arrays.mapped_memory=330M

这个查询呢?

MATCH (o:Foo {rbt:"local-foo"} )
MATCH (o)-[:val]->(j:Bar)

此外,如果您确定所有 j 节点都会有一个 :Bar 标签,您可以省略它以提高查询:

MATCH (o:Foo {rbt:"local-foo"} )
MATCH (o)-[:val]->(j)

与 M. Hunger 合作,通过修改我的系统的索引和堆管理来解决这个问题。解决问题后,查询速度不到一秒。