2014-12-19 71 views
1

我是Neo4j和圖形數據庫的新手。說,我有大約40000獨立圖上傳到neo4j數據庫使用批量插入,到目前爲止一切順利。我目前的數據庫文件夾大小是180Gb,問題是查詢,這太慢了。只需要統計節點的數量,它就需要永久。我正在使用1TB ram和40個內核的服務器,因此我想將整個數據庫加載到內存中並對其執行查詢。Neo4j巨大的數據庫查詢性能配置

我已經查看了配置,但不知道我應該如何更改緩存整個數據庫到內存中。所以請給我建議我應該修改的屬性。

我也注意到大部分時間Neo4j只使用一個或兩個內核,我該如何增加它?

我正在使用大學研究項目的免費版本,因此我無法使用高性能緩存是否有免費版本的替代?


我的解決方案: 我增加了更多的曲線到我的數據庫,現在我的數據庫大小爲400GB,具有超過十億節點。我接受了Stefan的評論,並使用java API來訪問我的數據庫,並將我的數據庫移至RAM磁盤。花費3個小時來遍歷所有節點並從每個節點收集信息。

RAM磁盤和Java API提高了性能。

+1

到目前爲止您做了什麼(如果有的話)配置更改?你使用的是哪個版本的數據庫? RE:授權,聯繫Neo,我相信你可以解決一些問題。他們不會欺負任何人。 – subvertallchris

回答

0

計算圖中的節點是一個全局操作,顯然需要觸及每個節點。如果緩存未填充(或未根據數據集進行配置),則硬盤驅動器是影響最大的因素。

要加快速度,請務必有效配置高速緩存,請參閱http://neo4j.com/docs/stable/configuration-caches.html

對於當前版本的Neo4j,Cypher查詢以單線程模式遍歷圖形。由於大多數圖形應用程序同時被多個用戶使用,因此此模型使可用內核飽和。

如果要運行單個查詢多線程,則需要使用Java API。

一般而言,Neo4j社區版在縮放超過4個內核方面存在一定的侷限性(由於企業版中更高性能的鎖管理器實現)。此外,企業版中的HPC(高性能緩存)顯着降低了完整垃圾收集的影響。

+0

鏈接被打破 – Ivelin

0

您使用的是什麼Neo4j版本?

請分享您當前的配置(conf/*和data/graph.db/messages.log),您可以使用Neo4j企業版的個人版。

你想運行哪種用例?

對所有節點進行計數可能不是您的主要操作(Java API中有很多方法可以使其更快)。

爲了實現高效的多核使用,運行多個客戶端或編寫在使用ThreadPools遍歷期間利用更多內核的Java代碼。

+0

我使用的Neo4j社區-2.1.4 neostore.nodestore.db.mapped_memory = 25G neostore.relationshipstore.db.mapped_memory = 50G neostore.propertystore.db.mapped_memory = 90G neostore.propertystore .db.strings.mapped_memory = 130G neostore.propertystore.db.arrays.mapped_memory = 130G 並將線程數設爲40 我想做子圖挖掘 –