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 合作,通过修改我的系统的索引和堆管理来解决这个问题。解决问题后,查询速度不到一秒。
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 合作,通过修改我的系统的索引和堆管理来解决这个问题。解决问题后,查询速度不到一秒。