【发布时间】:2013-12-31 11:14:33
【问题描述】:
我构建了一个在 REST 模式下使用 Spring 和 Neo4J 的 Java 应用程序。 Neo4j 安装在 Linux Red Hat 机器上,我没有更改它的默认配置。
当我使用我的 Java 服务来查询数据时,查询/插入运行非常慢,但是当我通过远程 Web 管理员执行相同的操作时,相同的查询运行得很快。
例如,当我从 Web 管理员运行它时,我有一个在几毫秒内运行的查询,但是从我的 Rest 服务调用它时需要超过 30 秒 (!!) 才能返回。目前,我的数据库(还)没有很多数据 - 几千个节点。
我不知道问题可能出在哪里 - 我猜如果直接运行速度很快,从我的服务运行时它也应该很快,不是吗?
这是一个示例查询(为了便于阅读,我缩进了它):
@Query("start movie=node({0})
match (topic)<-[r:relatesToTopic]-(movie)
where r.orderInTop5? is not null and r.orderInTop5?>0
return topic order by r.orderInTop5 asc;")
public Iterable<Topic> findTopTopics(Content content);
直接在web admin中,看起来是这样的:
start movie=node(50537)
match (topic)<-[r:relatesToTopic]-(movie)
where r.orderInTop5? is not null and r.orderInTop5?>0
return topic.name , topic.category, r.orderInTop5
order by r.orderInTop5 asc;
如果重要的话,removeToTopic 关系是在抽象父类上声明的,而不是在 Movie 类本身上。
我认为我有一个普遍的问题,因为它对于任何查询或创建都很慢。不使用 Neo4J 的服务运行速度非常快。
可以是 REST 配置吗?还有什么?
我很感激在哪里寻找或测试什么的任何想法。
谢谢 卡梅尔
【问题讨论】: