我在后端应用程序上有几个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))
Qyouu
TA贡献1786条经验 获得超11个赞
您也可以将服务器的事务超时设置为某个值,默认情况下它是禁用的:
neo4j> CALL dbms.setConfigValue('dbms.transaction.timeout', '360s') ;
- 2 回答
- 0 关注
- 185 浏览
添加回答
举报
0/150
提交
取消