コンテキスト: 大きなデータベース(数百万行のテーブル)からデータを呼び出すWebアプリケーションを構築しています。 DBのクエリが完了する前に、ユーザが気を変えて新しいデータを呼び出すことがあります。接続を解除せずにNode.jsを使用してMySQLクエリを強制終了するにはどうすればいいですか?
技術的な質問は:
私は2番目を使用していた:
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自体ですか?クエリを停止して他のクエリを開始するには、実際に切断して再接続する必要がありますか?あなたは、MySQLの現代版をお持ちの場合は
nodejsでどのようにクエリスレッドIDを見つけましたか?それは単なる接続スレッドIDですか? – Grork