[英]Neo4j outrageous write performance
我正在使用新的bolt客戶端對neo4j 3.0.7進行性能測試,結果有些奇怪。 我正在嘗試一個非常簡單的方案:向上插入1000個節點(使用merge命令)。
我嘗試了幾種方法:
這是我正在執行的查詢(我對person.id具有唯一性約束):“合並(n:person {id:'123'})SET n.name ='Diana Kesha',n.address ='aaa' ....返回n.id”
這是我的查詢的執行計划:
結果如下:
對於帶有128G RAM機的64核,絕對無法接受!
如今,不斷深入,我注意到,Neo4j的是使用10個線程時,使用1號2個選擇,和10個核心時使用的RAM 25%(我認為這是很好的),但只有1個核心。
我還注意到更改Neo4j的工作線程不會影響實際使用的內核數量。
我想念什么?
您有2個沖突的數字,您是說1000還是1000k = 1M?
2秒鍾進行1M更新是否太慢?
我建議每筆發送1k至10k更新,然后並行發送
喜歡:
MERGE (n:Person {id:{id}})
ON CREATE SET n.name={name} n.address={address}
最好將(2)批處理成列表參數
UNWIND {data} as row
MERGE (n:Person {id:row.id})
ON CREATE SET n.name=row.name n.address=row.address
因此,測試1000個請求(並行),每個請求有1000個更新,每次發送一個包含1000個地圖的列表。
UNWIND {data} as row
MERGE (n:Person {id:row.id})
ON CREATE SET n.name=row.name n.address=row.address
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.