Neo4j社区版在Windows上的开箱即用性能
我是Neo4j新手,发现与MySQL相比,查询时间相当长 在演示文稿中,我听到大约2ms的查询时间,但即使是电影图表教程中最简单的查询,我也会得到80ms。 对于其他(非常小的)数据集,我得到的查询时间约为150-250 ms 如何使用Neo4j获得更好的性能 我正在Windows 8笔记本电脑上使用二进制格式(zip)的Neo4j Server 2.0.1社区版稳定版,带有8GB RAM、SSD和i5。从浏览器界面执行查询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
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与服务器通信,可能需要更多的往返时间。