登录
首页 >  Golang >  Go问答

neo4j-go-driver 强制中止长时间运行的查询

来源:stackoverflow

时间:2024-04-28 16:09:34 426浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《neo4j-go-driver 强制中止长时间运行的查询》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

我的后端应用程序有几个 neo4j Cypher 查询。在极少数情况下,其中一个查询需要很长时间才能完成(我猜是由于未优化的查询),不仅如此,它还导致服务器资源使用量飙升。

我目前正在从事Go编程,我使用官方的neo4j-go-driver。

有什么方法可以使用驱动程序终止长时间运行的查询吗?从驱动程序的文档中我找到了这个 API WithTxTimeout。但是,我不确定该 API 的作用是什么,它是否只是表面上忽略长时间运行的查询,还是实际上终止它。

确实需要帮助。提前致谢。


解决方案


我认为它应该终止它。 代码应如下所示(根据查询,将 readtransaction 替换为 writetransaction):

query := "match (n) return n"
timeout := 30 * time.second
result, err := session.readtransaction(func(tx neo4j.transaction) (interface{}, error) {
    result, err := tx.run(query, map[string]interface{}{})
    // do something interesting
}, neo4j.withtxtimeout(timeout))

您也可以将服务器的事务超时设置为某个值,默认情况下禁用:

neo4j> CALL dbms.setConfigValue('dbms.transaction.timeout', '360s') ;

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《neo4j-go-driver 强制中止长时间运行的查询》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>