我遇到一个非常缓慢的 neo4j , htop 显示它吃了服务器上所有CPU的 lucene
我主要是写数据,每秒尝试50-500 cypher 请求,每个都是
FOREACH (id in {ids} | MERGE (:Community {id: id}))
所有3个请求生成器都在https://github.com/PublicRadio/VK_graph_reflector/tree/master/lib/reflectors(是的,JavaScript ES2015)
由于MERGE请求,我开始怀疑lucene会减慢一切,我是对的吗?这可能是原因吗? 如果我正确的话,我怎样才能优化所有这些?
答案 0 :(得分:0)
您可以分享您的视觉查询计划吗?
只需接受查询,并在浏览器中为PROFILE
添加前缀。
我认为有很多事情:
类似的东西:
MATCH (group:VK_Group {id: {group_id} })
MERGE (post:VK_Wall_Post { id: {post_id}}) ON CREATE SET post.date={post_date}
CREATE UNIQUE (group)-[:Published]-(post)
FOREACH (track IN {tracks} |
MERGE (trackNode:VK_Track {id: track.id})
ON CREATE SET trackNode.title=track.title,
trackNode.duration=track.duration
MERGE (artist:Artist {name: track.artist})
MERGE (trackNode)<-[:Performed]-(artist)
MERGE (post)-[:Attached]->(trackNode)
)
或者为了能够使用循环匹配:
MATCH (group:VK_Group {id: {group_id} })
MERGE (post:VK_Wall_Post { id: {post_id}}) ON CREATE SET post.date={post_date}
CREATE UNIQUE (group)-[:Published]-(post)
UNWIND {tracks} as track
MERGE (trackNode:VK_Track {id: track.id})
ON CREATE SET trackNode.title=track.title,
trackNode.duration=track.duration
MERGE (artist:Artist {name: track.artist})
MERGE (trackNode)<-[:Performed]-(artist)
MERGE (post)-[:Attached]->(trackNode)