2013-09-23 125 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。 –