2013-09-23 86 views
1

我正在使用Neo4j 2.0.0M4社区版和Node.js,https://github.com/thingdom/node-neo4j通过传递Cypher查询来通过REST API访问Neo4j DB服务器。neo4j REST API slow

我观察到neo4j从neo4j的webadmin,甚至从REST APi返回的数据都很慢。例如, 查询返回900条记录需要1.2秒,然后后续运行约200毫秒。 类似地,如果记录数达到27000,则webadmin浏览器中的查询需要21秒。

我想知道什么导致REST API如此之慢,以及如何去改善性能? a)它使用CYPHER?在JSON解析或 B)的HTTP开销本身与MySQL返回27000点的记录类似的查询时间为11毫秒

任何帮助,高度赞赏

+0

您正在执行哪些请求?第一个查询将预热db-caches,因此速度较慢(也必须进行解析)。 –

回答

3

的Neo4j 2.0是目前里程碑版本是没有性能优化。

考虑enabling streaming并确保您使用parameterized Cypher

对于较大的结果集,浏览器消耗大量时间进行渲染。您可以使用cURL尝试相同的查询来查看差异。

+0

嗨Stefan,感谢您的建议。我尝试了稳定版本,并使用参数化查询,但似乎数据仍然需要很长时间才能返回(14s),与mysql相比,这需要3秒才能完成相同数量的使用。 – user504879

+0

返回的行数是27000,但大多数在REST API的数据是有关于查询的关系就像穿越,这是我不希望个别节点的链接等等,我不知道如何摆脱他们?此外,我设置了neo4j的配置参数,如下所示,这可能会有所帮助。然而,它并没有在很大程度上也帮助:neostore.nodestore.db.mapped_memory = 250M neostore.relationshipstore.db.mapped_memory = 2048M 和Neo4j的-wrapper.conf有: wrapper.java.initmemory = 1024 包装.java.maxmemory = 8192 – user504879

+0

返回节点或rels非常嘈杂,请在返回中使用id(节点)或个别属性名称。要进行优化,请查看http://docs.neo4j.org/chunked/stable/embedded-configuration.html。 –