Neo4j性能 - 使用cypher和REST查询速度慢

时间:2013-11-28 16:39:20

标签: neo4j

我们有一个60M(每个节点有一个属性)节点和300个关系的图表。 当我们尝试查询FOAF时,结果非常慢 - 20-40秒(取决于用户拥有多少关系)

我们的Neo版本是2.0.0-M05,Neo服务器是CentOs6,8核(4x2 CPU),64GB RAM。

这是我们正在使用的查询:

START n=node:node_auto_index(user_id = 'test') 
MATCH n-[:FRIEND_OF*2..2]-friend_of_friend 
WHERE not(n-[:FRIEND_OF]-friend_of_friend) RETURN friend_of_friend.user_id, COUNT(*) 
ORDER BY COUNT(*) DESC limit 20;

我们尝试使用带参数的REST执行查询 - 但仍然需要花费很多时间。

Neo参数我们改变了:

neostore.nodestore.db.mapped_memory=3G
neostore.relationshipstore.db.mapped_memory=15G
neostore.propertystore.db.mapped_memory=3G
neostore.propertystore.db.strings.mapped_memory=100M
neostore.propertystore.db.arrays.mapped_memory=100M

还要更改JVM参数 -

wrapper.java.maxmemory=32768

这看起来不像正常行为。这可能是什么原因? 我们如何才能改善查询时间?

这是个人资料输出:

==> ColumnFilter(symKeys=["friend_of_friend.user_id", "  INTERNAL_AGGREGATEc9bc16db-8fc8-4aba-a4fc-04789a2a712d"], returnItemNames=["friend_of_friend.user_id", "COUNT(*)"], _rows=50, _db_hits=0)
==> Top(orderBy=["SortItem(Cached(  INTERNAL_AGGREGATEc9bc16db-8fc8-4aba-a4fc-04789a2a712d of type Long),false)", "SortItem(Cached(friend_of_friend.user_id of type Any),true)"], limit="Literal(50)", _rows=50, _db_hits=0)
==>   EagerAggregation(keys=["Cached(friend_of_friend.user_id of type Any)"], aggregates=["(  INTERNAL_AGGREGATEc9bc16db-8fc8-4aba-a4fc-04789a2a712d,CountStar())"], _rows=7142, _db_hits=0)
==>     Extract(symKeys=["friend_of_friend", "n", "  UNNAMED62"], exprKeys=["friend_of_friend.user_id"], _rows=12969, _db_hits=12969)
==>       Filter(pred="NOT(PatternPredicate((friend_of_friend)-[  UNNAMED109:FRIEND_OF]-(n)}))", _rows=12969, _db_hits=0)
==>         TraversalMatcher(trail="(n)-[:FRIEND_OF*2..2]-(friend_of_friend)", _rows=16455, _db_hits=16810)

0 个答案:

没有答案