【发布时间】:2017-11-18 05:34:00
【问题描述】:
背景: 我正在构建一个 Web 应用程序,该应用程序从大型数据库(表的几百万行)中调用数据;有时用户可以在数据库查询完成之前改变主意并调用新数据。
技术问题: 在这种情况下,我尝试使用以下方法终止查询:
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?
标签: mysql node.js kill-process