我有Neo4j v2.1.6 (默认配置)和Neo4j.rb v4.1.0。所有查询都很慢,大约在50 All左右。我在db中只有5个节点。
例如:
User.find_by(person_id: 826268332)
CYPHER 47ms MATCH (n:`User`) WHERE (n.person_id = {n_person_id}) RETURN n LIMIT {limit_1} | {:n_person_id=>826268332, "limit_1"=>1}哪里会有问题?
发布于 2015-02-02 22:47:55
我是Neo4j.rb的核心维护人员之一,以及Brian,他在上面回答道。这并不完全是一个完整的答案,因为我们需要了解更多关于您的系统来回答这个问题,但是我在这里发布这篇文章是因为它对于一个评论来说太多了。
我的钱在你的数据库或者你的系统上出了问题。我们有一个类似的问题--在本地工作时查询速度慢,没有原因可以确定--对于运行Windows的用户来说。见Neo4j.rb version 3.0 slow performance RoR, over 1024ms for all queries。我们没能把它固定下来。在本地,运行相同的查询时,我第一次运行它时会看到13 3ms,之后每次都会看到~3ms。索引不会对数据库产生那么小的影响。
限制出现问题的机会并普遍提高业绩的方法:
oj和oj_mimic_json宝石如果您的db和app服务器位于两个不同的网络中,您将看到类似这样的查询的更长响应。
关于在MongoDB和PostgreSQL中这个简单查询要快得多的评论:是的,它将是这样的。这两种方法都比Neo4j.rb更快地返回简单查询,至少有两个原因:
在发布Neo4j.rb 4.0之前,我针对Postgres和MongoDB做了大量的基准测试,并发现了相同的结果:当返回单个对象时,它们会粉碎我们。(PostgreSQL是令人惊异的技术通用。)但是,一旦你开始寻找相关的对象,事情就平衡了,当你增加复杂性的时候,差别就变得更大了。不幸的是,我没有任何数字可以分享,但是如果我有时间的话,我会在不久的某个时候写一篇关于它的博客文章。
发布于 2015-02-02 19:32:53
太奇怪了。在neo4j gem中,我经常看到简单的查询在1-5ms左右运行。
为了调试,如果您这样做了呢?
User.where(yeti_person_id: 826268332).first还有,这给了你什么?
puts User.where(yeti_person_id: 826268332).to_cypherhttps://stackoverflow.com/questions/28283412
复制相似问题