You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用mysql.createPool替代createConnection后查询完成是否需要释放连接

结论

你当前的查询写法不需要主动释放连接。

原因

你使用的Node.js生态常用mysql库(mysqljs)提供的pool.query()是封装好的快捷调用方法,内部会自动完成三个步骤:

  • 从连接池申请空闲连接
  • 执行你传入的SQL语句
  • 执行完成(触发回调后)自动将连接释放回连接池

你的现有写法完全符合规范,不需要额外加释放逻辑。

补充说明

只有当你主动调用pool.getConnection()手动获取连接的场景下,才需要在使用完成后调用connection.release()将连接归还回连接池,示例写法如下:

dbConn.getConnection(function(err, connection) {
  if (err) throw err; 
  // 用拿到的connection执行查询
  connection.query("SELECT * FROM spesialisasi s ORDER BY s.nama_spesialisasi ASC", function (err, res) {
    // 手动释放连接,不释放的话这个连接会被一直占用无法被其他请求复用
    connection.release();

    if(err) {
      console.log("error: ", err);
      result(err, null);
    } else {
      result(null, res);
    }
  });
});

使用连接池替代单连接的方案本身就可以很好的解决你之前遇到的「空闲时间过长连接被服务端断开」的问题,连接池会自动维护连接的有效性、自动重试重连,更适合长期运行的服务端场景。


内容的提问来源于stack exchange,提问作者Ananda Pramono

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:06:04