我该如何优化这个 neo4j 查询?
How can I optimize this neo4j query?
查询是为了从 Grouplens 数据集中加载 100 万个评分。我已经为用户和电影创建了节点,现在正在将它们合并到与电影的关系中。
load csv from "file:///ratings.csv" as row fieldterminator ';'
MERGE (u:User {userID:toInt(row[0])} )
MERGE (m:Movie {movieID:toInt(row[1])} )
MERGE (u)-[r:RATING {value:toInt(row[3])} ]->(m)
在 JVM(笔记本电脑,4GB RAM)中分配 2GB RAM 时,此查询需要很长时间,尽管在 4-6 GB RAM(台式机)上 运行s 相当快。另外,我有关于用户和电影的索引以及它们各自的 ID。
此查询的配置文件如下所示-
数据库的命中率看起来很反常,我想我可以优化这个查询。
(跟进问题):
我如何 运行 在 neo4j-shell 中优化密码查询?这是正确的语法吗 -
start [CYPHER_QUERY] ;
尝试USING PERIODIC COMMIT
。 http://neo4j.com/docs/stable/query-periodic-commit.html
此外,考虑在最后一行使用 CREATE
而不是 MERGE
来创建关系,因为我假设您的 .csv 文件中没有重复评分。
查询是为了从 Grouplens 数据集中加载 100 万个评分。我已经为用户和电影创建了节点,现在正在将它们合并到与电影的关系中。
load csv from "file:///ratings.csv" as row fieldterminator ';'
MERGE (u:User {userID:toInt(row[0])} )
MERGE (m:Movie {movieID:toInt(row[1])} )
MERGE (u)-[r:RATING {value:toInt(row[3])} ]->(m)
在 JVM(笔记本电脑,4GB RAM)中分配 2GB RAM 时,此查询需要很长时间,尽管在 4-6 GB RAM(台式机)上 运行s 相当快。另外,我有关于用户和电影的索引以及它们各自的 ID。
此查询的配置文件如下所示-
数据库的命中率看起来很反常,我想我可以优化这个查询。
(跟进问题): 我如何 运行 在 neo4j-shell 中优化密码查询?这是正确的语法吗 -
start [CYPHER_QUERY] ;
尝试USING PERIODIC COMMIT
。 http://neo4j.com/docs/stable/query-periodic-commit.html
此外,考虑在最后一行使用 CREATE
而不是 MERGE
来创建关系,因为我假设您的 .csv 文件中没有重复评分。