我是Neo4j的新手,发现查询时间与MySQL相比相当高。开箱即用的Neo4j社区版在Windows上的性能
在演示文稿中,我听到大约2ms的查询时间,但即使对于来自Movie Graph教程的最简单查询,我也得到80 ms。 对于其他(非常小)的数据集,我会在150-250 ms附近得到查询时间。
如何使用Neo4j获得更好的性能?
我正在使用Neo4j服务器2.0.1社区版8GB RAM,SSD,i5的Windows 8笔记本电脑上的二进制格式(zip)稳定版本。查询从浏览器界面执行。在MySQL(InnoDB的)
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
类似的查询是围绕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
正如迈克尔在他的回答中提到的,你应该使用索引和标签。我只是想澄清一下,你在MySQL中的*类似查询并不是真的类似。用你的MySQL查询,你只打到一个'Person'表,只有'Person'实体。用你当前的Neo4j查询,你正在筛选所有*节点(比'Person's数量多得多的节点。 –
你是对的,我的不好,我的意图是用标签'(tom:Person)查询。 ..)'。查询时间然后下降到65毫秒 – oliverdm