我在后端應(yīng)用程序上有幾個neo4j Cypher查詢。在極少數(shù)情況下,其中一個查詢需要很長時間才能完成(由于我猜是由于未優(yōu)化的查詢),不僅如此,它還使服務(wù)器資源使用率達到極高的峰值。我目前正在使用Go編程,我使用官方的neo4j-go-driver。有沒有辦法使用驅(qū)動程序終止長時間運行的查詢?從驅(qū)動程序的文檔,我發(fā)現(xiàn)了這個API WithTxTimeout。但是,我不確定API的作用,它是否只是忽略了表面上長時間運行的查詢或?qū)嶋H終止它。真的需要幫助。提前致謝。
2 回答

holdtom
TA貢獻1805條經(jīng)驗 獲得超10個贊
我認為它應(yīng)該終止它。代碼應(yīng)如下所示(替換為取決于查詢):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條經(jīng)驗 獲得超11個贊
您也可以將服務(wù)器的事務(wù)超時設(shè)置為某個值,默認情況下它是禁用的:
neo4j> CALL dbms.setConfigValue('dbms.transaction.timeout', '360s') ;
- 2 回答
- 0 關(guān)注
- 212 瀏覽
添加回答
舉報
0/150
提交
取消