簡體   English   中英

Neo4j-查詢性能下降

[英]Neo4j - query performance degradation

這是我的查詢:

MATCH (p:Publisher)-[r:PUBLISHED]->(w:Woka)-[s:AUTHORED]-(a:Author) 
MATCH (l:Language)-[t:USED]->(w:Woka) 
WHERE (a.author_name =~ '.*Camus.*' and a.author_name =~ '.*Albert.*') 
RETURN p.publisher_name, w.woka_title, a.author_name, l.language_name;

第一次執行此結果將在3.8秒內返回。 在幾分鍾后的第二次執行中,結果將在15.1秒內返回。 我執行的越多,響應時間就越長。 對於第三次執行,響應時間增加了,稍后,我得到了30到90秒之間的結果。

我是該(開發)數據庫的唯一用戶。 此處未添加,刪除或更改任何數據。 也沒有在那里刪除或創建索引。 當關閉與數據庫的三個連接中的兩個時,響應時間回到15秒。

內存設置為4GB作為init,最大可設置為8GB。 服務器總內存為16GB。

這是怎么回事 為什么響應時間差異如此之大?

您的圖表有多大? 可能是因為它為緩存分配了很多堆,然后沒有足夠的空間來運行沒有垃圾回收的查詢。

我假設您的關系都是1:n,如果沒有,則在兩個匹配項之間添加一個WITH distinct p,w,a

您的查詢也不理想,可能會產生很多中間結果,您可以使用PROFILE查看查詢計划。

嘗試這個:

PROFILE
MATCH (a:Author)
WHERE (a.author_name =~ '.*Camus.*' and a.author_name =~ '.*Albert.*') 
MATCH (p:Publisher)-[:PUBLISHED]->(w:Woka)<-[:AUTHORED]-(a)
MATCH (l:Language)-[:USED]->(w:Woka) 
RETURN p.publisher_name, w.woka_title, a.author_name, l.language_name;

我借鑒了其他解決方案,並在文件conf / neo4j.properties中更改了參數,如下所示(此后服務器重新啟動):

neostore.nodestore.db.mapped_memory=512M
neostore.relationshipstore.db.mapped_memory=512M
neostore.propertystore.db.mapped_memory=512M
neostore.propertystore.db.strings.mapped_memory=512M
neostore.propertystore.db.arrays.mapped_memory=512M

現在,結果平均返回的速度提高了300%,將時間從90秒縮小到30秒,而且我不再從Web界面到數據庫斷開連接了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM