我想加载一个包含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文件吗?
答案 0 :(得分:1)
这花费了太多时间。数百万的关系应该花费几分钟甚至几分钟的时间。
我刚刚在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
:如果要增加Heap(RAM),除非使用,否则不会提高性能。当您将LIMIT
设置为10,000时,大部分堆将是免费的。我能够使用4G堆加载限制为100,000的数据。您可以设置200,000或更多。如果它引起任何问题,请尝试减少它。下次运行加载CSV查询时,请不要忘记删除以前的数据,因为它将创建重复项。
注意::我将文件下载到便携式计算机上并使用了,因此没有下载时间。