Neo4j > 用户定义的存储过程:一个存储过程会比从python调用的许多密码查询更快吗?



问题:

python循环的每次迭代都会向Neo4j发送一个返回值的密码查询。这需要相当长的时间,并且是瓶颈,因为循环项目的数量为50或更多。

环境

  • windows服务器2019
  • Neo4j服务器版本:3.5.9(社区(
  • python 3.6
  • Neo4j python驱动程序4.2.1

问题

一次调用自定义存储过程会比客户端重复请求Neo4j更快吗

详细信息

将向存储过程传递所有50项的密码参数,并需要返回全部的结果。

好吧,如果您可以重构代码以对存储过程进行一次调用,这意味着您也可以重构以生成一个Cypher查询并处理结果应用程序端。

也许存储过程会更快,因为您可以利用JVM多线程。

然而,使用存储过程也有一些缺点:

  1. 当存储过程的代码发生更改时,您需要重新部署并重新启动Neo4j
  2. 您需要维护它并使用新的Neo4j版本进行升级
  3. 这意味着您可以用Java编写它们

我很少看到使用存储过程来提高性能(这种情况确实存在,但它有一些利基用例(。

正如您所说,瓶颈是查询数据库的循环,我会先尝试解决这个问题。

其次,Neo4j的性能通常由三个主要因素处理:

  1. 您能够很好地对图形建模,以便优化查询
  2. 您调整Cypher查询的能力
  3. 您的索引配置正确

在使用Neo4j的过程中,99.99%的问题将通过以上3点得到解决。

相关内容

  • 没有找到相关文章

最新更新