Neo4j 是否有能力通过时间限制限制密码查询结果?
我在生产中运行相当耗时的密码查询。查询不需要有所有匹配的结果,而是应该在指定的时限内完成。如果有10000个可能的匹配项,可以选择5000个,而不是neo4j事务超时,这是很小的Neo4j 是否有能力通过时间限制限制密码查询结果?,neo4j,cypher,gremlin,Neo4j,Cypher,Gremlin,我在生产中运行相当耗时的密码查询。查询不需要有所有匹配的结果,而是应该在指定的时限内完成。如果有10000个可能的匹配项,可以选择5000个,而不是neo4j事务超时,这是很小的 是否可以在cypher查询中指定timelimit,比如在Gremlin timelimit步骤中 您可以使用APOC程序来实施时间限制 过程的第一个参数必须是密码查询,当查询返回0或NULL或FALSE时,该查询将停止过程。该查询可以访问包含查询返回的上一个值的$previous(或者NULL,如果这是第一次调用查询
是否可以在cypher查询中指定timelimit,比如在Gremlin timelimit步骤中 您可以使用APOC程序来实施时间限制 过程的第一个参数必须是密码查询,当查询返回
0
或NULL
或FALSE
时,该查询将停止过程。该查询可以访问包含查询返回的上一个值的$previous
(或者NULL
,如果这是第一次调用查询)。查询的返回值必须命名为loop
第二个参数必须是返回所有要处理的项(例如节点)的密码查询,第三个参数必须是对第二个参数返回的每个项都有效的密码查询。第二个参数的密码查询返回的命名值(例如,命名的foo
)可用于第三个参数的密码查询(例如,$foo
)
第四个参数是“批量大小”,即在再次询问第一个参数以决定是否停止之前,第三个参数应处理的项目数
在下面的示例查询(对于虚构的用例)中,我假设$duration
(等待回答的大概最大毫秒数)和$batchSize
(每个批次的大小)作为参数传递(到外部密码查询):
伟大的多谢各位!如果只更新了部分数据,当事务超时发生时,这部分数据不会回滚吗?
WITH timestamp() + $duration AS endTime
CALL apoc.periodic.rock_n_roll_while(
'RETURN timestamp() < endTime AS loop',
'MATCH (p:Person) RETURN p',
'MATCH (p) WHERE p = $p SET p.lastname = p.name',
$batchSize)
MATCH (p:Person)
SET p.lastname = p.name