2014-03-19 45 views
0

我有一個基本的neo4j數據庫有10個節點(無關係)。我正在嵌入模式,並啓動服務器/ WebAdmin的如下:重新啓動數據庫後基本密碼查詢的Neo4j性能

GraphDatabaseService graphDb; 
graphDb = new GraphDatabaseFactory().newEmbeddedDatabaseBuilder("/path/to/data/directory").newGraphDatabase(); 
WrappingNeoServer srv = new WrappingNeoServer((GraphDatabaseAPI) graphDb); 
srv.start(); 

一旦我創建節點,查詢性能是很好,但是當我重新啓動服務器,基本暗號查詢的查詢性能變慢。以下查詢大約需要1-3秒:

MATCH (n) RETURN count(n); 

在重新啓動之前(緊接在創建節點之後),此查詢小於100毫秒。

下面是我使用的數據目錄的鏈接:https://drive.google.com/file/d/0B1pENwDgk7SQTFkxU1BGd2poeUU/edit?usp=sharing

我運行2.0.1版。

什麼可能導致這種性能下降?

回答

3
  1. 數據庫必須初始化,建立內存映射。
  2. 必須從磁盤加載節點。
  3. Cypher查詢解析器必須先建立它的規則。
  4. 你的查詢必須被解析構建並放入緩存中。

這就是爲什麼永遠不要相信第一100-1000查詢的性能測量。