【问题标题】:How to kill a MySQL query with Node.js without disconnecting?如何在不断开连接的情况下使用 Node.js 终止 MySQL 查询?
【发布时间】: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


【解决方案1】:

如果您有现代版本的 MySQL,则可以改用 KILL QUERY <threadId>,这将终止该连接上当前正在执行的查询,但保持连接不变。

【讨论】:

  • 精彩的- 一个词让代码变得更好!非常感谢=)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-05
  • 1970-01-01
  • 2015-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多