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'
)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章