1、定義
對於複雜的更新數據庫的Cypher查詢,可以使用APOC的submit()過程異步執行該查詢。APOC還提供下面的過程管理異步/後臺執行的任務:
- apoc.periodic.list():列出所有正在後臺執行的任務
- apoc.periodic.cancel(taskName):終止後臺任務
管理正在運行的查詢是Neo4j企業版纔有的功能。因爲APOC可以同時運行在Neo4j社區版和企業版上,使用上述APOC異步執行過程使得社區版同樣擁有部分管理後臺查詢的能力。
2、過程概述
apoc.periodic.submit過程參數說明如下所示。
參數名 |
類型 |
默認值 |
可爲空? |
說明 |
taskName |
字符串 |
無 |
否 |
給查詢任務賦予的名稱 |
statement |
字符串 |
無 |
否 |
Cypher查詢。可以是查詢或者更新操作 |
3、Cypher示例
// (1) 後臺/異步執行復雜查詢,計算1億次加法。
// 參數:- taskName: “Large query”
// - statement: 計算1億次加法
CALL apoc.periodic.submit('Large query',
'UNWIND range(1,10000) AS a1 UNWIND range(1,10000) AS a2 WITH a1+a2 AS a RETURN sum(a)'
)
// (2) 查詢後臺/異步執行的查詢任務的狀態。
// 參數:無。
CALL apoc.periodic.list()
YIELD name, delay, rate, done, cancelled
WITH name, done
WHERE name = 'Large query'
RETURN *
// (3) 終止後臺/異步執行的查詢任務。
// 參數:- taskName: “Large query”
CALL apoc.periodic.cancel('Large query')