Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(4.6) - 并行执行Cypher

Cypher的执行在缺省情况下都是单线程的。而有时,我们需要并行执行查询,例如对一个名称列表,查询它们在图中的邻居。这里,可以用APOC的Cypher相关过程runParallel()。

// 并行初始化并执行查询。
 // 缺省情况下,最大分区数/并行数为CPU内核数 x 100; 
 // 最多批次数为10000。例如,如果Neo4j数据库被分配了4个内核,
 // 那么并行的最多进程数为400。

CALL apoc.cypher.parallel(
   fragment,
   params,
   parallelizeOn
) YIELD value

 

参数名

类型

缺省值

可为空?

说明

fragment

字符串

Cypher查询。

params

MAP

NULL

查询参数。

parallelizeOn

字符串

NULL

在params为空时可以为NULL。

不为空时,该参数的值是fragment查询语句中用来并行执行、类型为数组的变量名。

 

 

 

 

 

 

 

 

 

 

 我们来看个例子。下面的查询会从名称列表中并行取出每个姓名、搜索其邻居,并返回姓名:

CALL apoc.cypher.parallel(
  'MATCH (p:Person{name:$name}) -[:FRIEND_OF]-> (p1) RETURN p1.name AS name', 
  {name:['John','Mary','Peter','Wong','Chen','Lynas','Smith','Anna']},
  'name'
)

 

你可能感兴趣的:(Neo4j高级应用技术专题,APOC,图数据库,neo4j,图数据库,APOC,cypher,并行查询)