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

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

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

有没有办法使用驱动程序终止长时间运行的查询?从驱动程序的文档,我发现了这个API WithTxTimeout。但是,我不确定API的作用,它是否只是忽略了表面上长时间运行的查询或实际终止它。

真的需要帮助。提前致谢。


繁星coding
浏览 186回答 2
2回答

holdtom

我认为它应该终止它。代码应如下所示(替换为取决于查询):ReadTransactionWriteTransactionquery := "MATCH (n) RETURN n"timeout := 30 * time.Secondresult, err := session.ReadTransaction(func(tx neo4j.Transaction) (interface{}, error) {    result, err := tx.Run(query, map[string]interface{}{})    // do something interesting}, neo4j.WithTxTimeout(timeout))

Qyouu

您也可以将服务器的事务超时设置为某个值,默认情况下它是禁用的: neo4j> CALL dbms.setConfigValue('dbms.transaction.timeout', '360s') ;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go