2015-04-07 40 views
1

我已導入nodes.tsv(350MB,18M行,3個COLS)和rels.tsv(5GB,150M行,2個COLS)用間歇進口商腳本。 這些都是我batch.properties文件條目什麼是對Neo4j的子第二查詢延遲的最佳配置?

  • •neostore.nodestore.db.mapped_memory = 250M •neostore.relationshipstore.db.mapped_memory = 1000M •neostore.relationshipgroupstore.db.mapped_memory = 10M •neostore .propertystore.db.mapped_memory = 500M •neostore.propertystore.db.strings.mapped_memory = 500M •neostore.propertystore.db.arrays.mapped_memory = 215M •dump_configuration =真

我已經打開自動upda TE和自動索引在ne04j.properties如下

  • •allow_store_upgrade =真•node_auto_indexing =真 •node_keys_indexable =姓名,職務•relationship_auto_indexing =真 •relationship_keys_indexable = sent_date,has_read

我米使用具有1個TB SSD和256GB RAM 64位Windows服務器上的Neo4j 2.2版本。 什麼是批量進口和Neo4j的服務器,我應該獲得最大的查詢和數據加載peformance使用的配置? 此查詢例如:在瀏覽器

MATCH()-[r:BELONGS_TO]->() RETURN r 

回答

1

超時隨着數百萬的查詢可能是緩慢的,不管你做什麼樣的節點,但隨着內存量您有可用也許它不會是一個大不了。這是計算內存設置一個很好的指南:

http://neo4j.com/developer/guide-performance-tuning/

當你玩,我會在服務器上設置查詢超時,使您的查詢不能堵塞服務器並迫使你需要重新啓動它:

http://neo4j.com/docs/stable/server-configuration.html

你可以嘗試用您的查詢LIMIT條款開頭,所以你可以得到性能如何降低爲限增加一個想法。

如果你都不可能找到一種方法來限制基於節點的選擇,這也將是有益的查詢,特別是如果你可以通過一個標籤或標籤/資產組合做(你可以索引)。

最後,我會嘗試在Web控制檯中使用EXPLAIN得到您的查詢將如何執行的想法:

http://neo4j.com/docs/2.2.0/how-do-i-profile-a-query.html

您也可以使用PROFILE,儘管這將運行查詢,所以你需要在那裏更加小心。你也許可以使用LIMIT這裏也玩,看到的東西是如何工作的

+0

感謝布賴恩的信息。我的下一步是分析查詢。奇怪的是,在插入和創建索引後,我的總體數據庫文件夾大小爲11.6GB。因此,所有這些都可以輕鬆駐留在我擁有的RAM中。所以我很驚訝,查詢會超時到可以完全駐留在內存中的dB。我想知道是否有任何道具我應該增加在batch.properties或neo4j – user330612

+0

我認爲主要問題是查詢需要錨定在節點上,如果你只是查詢'()',那麼它本質上必須搜索整個數據庫並檢查每個節點上每個關係的'BELONGS_TO'關係 –

2

如果您有那麼多內存:

你的內存映射配置是錯誤的2。2

僅使用此設置: `dbms.pagecache.memory = 20G``

,然後在Neo4j的-wrapper.conf提供的Neo4j與24G堆

它可以擴展更好地利用Neo4j的企業。

禁用他們不用於你正在做的事情的自動索引。

您的查詢是沒有意義的任何使用情況:

MATCH()-[r:BELONGS_TO]->() RETURN r

亞秒級圖形查詢總是從一組具體的啓動點(與索引查找檢索),然後從這些出發點出發。

像你這樣的全局掃描查詢只會將所有數據都拉到內存中,並且效率低下。

特別提示:如果你回報這麼多的數據,你不能假設亞秒級的表現。數據量本身就會殺死它。

因此,找出一個標籤+屬性值,您想從中開始,然後編寫從這些起點出發的查詢。

如果你想在你正在做的事情上達到亞秒級,你必須下到Java API並在那裏聚合,與服務器擴展:

int counter=0; 
for (Relationship r : GlobalGraphOperations.at(db)) { 
    if (r.hasType(Types.BELONGS_TO)) counter++; 
} 
return counter; 
+0

謝謝邁克爾。我可以在neo4j.propeties文件中更改頁面框架內存的設置。哪兒是 。 conf文件位於我可以修改vm的堆大小?找不到任何。 conf文件在我的db文件夾中 – user330612

+0

它在conf文件夾中,如果你在windows上,請檢查starter-app的「選項」按鈕。 –

相關問題