[英]Load a large csv file into neo4j
我要加載一個包含Wikipedia類別rels.csv之間的關系的csv(類別之間的關系為400萬個)。 我試圖通過更改以下參數值來修改設置文件:
dbms.memory.heap.initial_size=8G
dbms.memory.heap.max_size=8G
dbms.memory.pagecache.size=9G
我的查詢如下:
USING PERIODIC COMMIT 10000
LOAD CSV FROM
"https://github.com/jbarrasa/datasets/blob/master/wikipedia/data/rels.csv?raw=true" AS row
MATCH (from:Category { catId: row[0]})
MATCH (to:Category { catId: row[1]})
CREATE (from)-[:SUBCAT_OF]->(to)
此外,我在catId和catName上創建了索引。 盡管進行了所有這些優化,查詢仍在運行(自昨天開始)。
您能告訴我是否還有更多優化方法可以加載此CSV文件嗎?
花費太多時間。 數百萬的關系應該花費幾分鍾甚至幾分鍾的時間。
我剛剛在321秒內從您共享的鏈接(Cats-90和Rels-231)中加載了所有數據,而我的筆記本電腦上的內存設置還不到一半。
dbms.memory.heap.initial_size=1G
dbms.memory.heap.max_size=4G
dbms.memory.pagecache.size=1512m
稍微修改的查詢:增加LIMIT 10次
USING PERIODIC COMMIT 100000
LOAD CSV FROM
"https://github.com/jbarrasa/datasets/blob/master/wikipedia/data/rels.csv?raw=true" AS row
MATCH (from:Category { catId: row[0]})
MATCH (to:Category { catId: row[1]})
CREATE (from)-[:SUBCAT_OF]->(to)
一些建議:
在用於搜索節點的字段上創建索引。 (加載數據時無需在其他字段上建立索引,以后可以完成,它會消耗不必要的內存)
不要將最大堆大小設置為已滿系統RAM。 將其設置為RAM的50%。
LIMIT
:如果增加堆(RAM),除非使用,否則不會提高性能。 當您將LIMIT
設置為10,000時,堆的大部分將是免費的。 我能夠使用4G堆加載限制為100,000的數據。 您可以設置200,000或更多。 如果它引起任何問題,請嘗試減少它。 下次運行加載CSV查詢時,請不要忘記刪除以前的數據,因為它將創建重復項。
注意:我將文件下載到便攜式計算機並使用了相同文件,因此沒有下載時間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.