上下文: 我正在構建一個Web應用程序,它調用大型數據庫(表中數百萬行)的數據;有時用戶可以改變主意,並在數據庫查詢完成之前調用新數據。如何在不斷開連接的情況下使用Node.js殺死MySQL查詢?
技術問題: 我試着用殺死在此情況下,查詢:
app.get("/data", function(req, res) {
if (req.query.killQuery == "true") {
con.query("KILL \"" + threadId + "\"", function(err) {
if (err) throw err;
console.log("I have interrupted the executing query for a new request");
giveData(req, res); //The function that will execute a new query
});
return;
}
giveData(req, res); //The function that will execute a new query
});
現在我對這個代碼的幾個疑點:
我不得不用第二連接來終止第一個線程,因爲在第一個完成之前,第一個無法執行新的查詢。這是一個Node.js的行爲還是做這種事情的正確方法?
KILL thread_id
語句關閉整個連接而不是停止單個查詢。同樣,它是Node.js的行爲,還是MySQL本身?我是否應該斷開連接並重新連接以停止查詢並從另一個開始?
你是怎麼找到nodejs的查詢線程ID的?這只是連接線程ID? – Grork