Neo4j社区版在Windows上的开箱即用性能

Neo4j社区版在Windows上的开箱即用性能,neo4j,Neo4j,我是Neo4j新手,发现与MySQL相比,查询时间相当长 在演示文稿中,我听到大约2ms的查询时间,但即使是电影图表教程中最简单的查询,我也会得到80ms。 对于其他(非常小的)数据集,我得到的查询时间约为150-250 ms 如何使用Neo4j获得更好的性能 我正在Windows 8笔记本电脑上使用二进制格式(zip)的Neo4j Server 2.0.1社区版稳定版,带有8GB RAM、SSD和i5。从浏览器界面执行查询 MATCH (tom {name: "Tom Hanks"}) RET

我是Neo4j新手,发现与MySQL相比,查询时间相当长

在演示文稿中,我听到大约2ms的查询时间,但即使是电影图表教程中最简单的查询,我也会得到80ms。 对于其他(非常小的)数据集,我得到的查询时间约为150-250 ms

如何使用Neo4j获得更好的性能

我正在Windows 8笔记本电脑上使用二进制格式(zip)的Neo4j Server 2.0.1社区版稳定版,带有8GB RAM、SSD和i5。从浏览器界面执行查询

MATCH (tom {name: "Tom Hanks"}) RETURN tom
Returned 1 row in 189 ms

MATCH (tom {name: "Tom Hanks"}) RETURN tom
Returned 1 row in 79 ms
MySQL(InnoDB)中的类似查询大约为4毫秒:

SET PROFILING=1;
SELECT * FROM person WHERE name = "Tom Hanks";
SHOW PROFILES;

+----------+------------+-----------------------------------------------+
| Query_ID | Duration   | Query                                         |
+----------+------------+-----------------------------------------------+
|        1 | 0.00369300 | SELECT * FROM person WHERE name = "Tom Hanks" |
+----------+------------+-----------------------------------------------+
1 row in set (0.00 sec)
我在执行
Neo4j.bat
时遇到启动错误(异常)。这可能是问题所在吗

Can't load log handler "java.util.logging.FileHandler"
java.io.IOException: Couldn't get lock for data/log/neo4j.%u.%g.log

您可能需要为其创建索引

create index on :Person(name);
并使用如下查询:

MATCH (tom:Person {name: "Tom Hanks"}) RETURN tom
请注意,浏览器测量的不仅仅是查询,还有用于加载可视化数据和其他信息的额外往返

对于我来说,在浏览器中,结果是:

Returned 1 row in 38 ms 
如果我在我的机器上执行您的查询,但使用neo4j shell(您也可以使用
http://localhost:7474/webadmin
),我得到的是:

$ match (n:Person {name:"Tom Hanks"}) return n;
==> +--------------------------------------+
==> | n                                    |
==> +--------------------------------------+
==> | Node[71]{name:"Tom Hanks",born:1956} |
==> +--------------------------------------+
==> 1 row
==> 1 ms

正如Michael在回答中提到的,您应该使用索引和标签。我只是想澄清一下,您在MySQL中的类似查询并不是真正的类似查询。使用MySQL查询,您将访问一个
Person
表,其中只有
Person
实体。使用您当前的Neo4j查询,您正在筛选所有节点(明显多于
个人
的数量。您说得对,我的错。我的意图是使用标签
(tom:Person…
)进行查询。然后查询时间降至65毫秒。谢谢!没有索引,在web控制台中查询需要20-30毫秒(但第一次执行总是需要更长的时间);对于索引,它需要1-4ms。但是,在命令行shell中,由于某种原因,查询似乎要慢15-20ms。由于shell使用RMI与服务器通信,可能需要更多的往返时间。