如何解决Neo4j > 用户定义的存储过程:存储过程会比从 python 调用的许多密码查询更快吗?
问题:
python 循环 的每次迭代都会向 Neo4j 发送一个返回值的密码查询。 这需要相当长的时间并且是一个瓶颈,因为循环项目的数量是 50 个或更多。
环境
- Windows 服务器 2019,
- Neo4j 服务器版本:3.5.9(社区),
- python 3.6
- Neo4j python 驱动程序 4.2.1
问题
对自定义存储过程的一次调用是否比对 Neo4j 的重复客户端请求更快?
详情
存储过程会为所有 50个项目传递密码参数,并且需要返回所有 50个的结果。
解决方法
好吧,如果你可以重构你的代码来调用一个存储过程,那意味着你也可以重构为一个 Cypher 查询并处理结果应用端。
也许存储过程会更快,因为您可以利用 JVM 多线程。
但是,使用存储过程有一些缺点:
- 当存储过程的代码发生变化时,需要重新部署并重启 Neo4j
- 您需要维护它并使用新的 Neo4j 版本进行升级
- 这意味着您可以用 Java 编写它们
我很少看到使用存储过程来提高性能(确实发生过,但它有一些小众用例)。
正如您所说,瓶颈是您查询数据库的循环,我会先尝试解决这个问题。
其次,Neo4j 的性能通常由三个主要因素来处理:
- 您对图表进行良好建模以优化查询的能力
- 您调整 Cypher 查询的能力
- 您的索引配置正确
在你使用 Neo4j 的过程中,99.99% 的问题都会通过以上 3 点解决。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。