为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
繁星coding 2022-08-01 17:29:06
我在后端应用程序上有几个neo4j Cypher查询。在极少数情况下,其中一个查询需要很长时间才能完成(由于我猜是由于未优化的查询),不仅如此,它还使服务器资源使用率达到极高的峰值。我目前正在使用Go编程,我使用官方的neo4j-go-driver。有没有办法使用驱动程序终止长时间运行的查询?从驱动程序的文档,我发现了这个API WithTxTimeout。但是,我不确定API的作用,它是否只是忽略了表面上长时间运行的查询或实际终止它。真的需要帮助。提前致谢。
查看完整描述

2 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

我认为它应该终止它。代码应如下所示(替换为取决于查询):ReadTransactionWriteTransaction


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))


查看完整回答
反对 回复 2022-08-01
?
Qyouu

TA贡献1786条经验 获得超11个赞

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

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


查看完整回答
反对 回复 2022-08-01
  • 2 回答
  • 0 关注
  • 185 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信