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

单数据库连接vs连接池:多线程及Node.js场景技术问询

对数据库连接池的理解

维持多个数据库连接,客户端应用可直接使用这些连接发送查询,无需承担建立新TCP连接(如握手)的开销。

待深入的问题

1. 多线程应用中使用单连接的局限

  • 多线程能否共享单连接发送接收数据?此时查询是否按顺序执行?
  • 是否可在收到首个查询响应前发送多个查询?还是socket会阻塞至收到首个响应?若为后者,是否存在误读其他查询返回数据的风险?
  • 通常数据库是按查询还是按连接创建线程?

2. Node.js这类单线程应用中,为何需要连接池?

以下为示例代码:

let connection = msql.Connection()

const getPerson = async () => {
    connection.Query('SELECT * from People where name = "test"')
}

let arr = Array.from(Array(1_000_000).keys())

await Promise.all(arr.map(x => {
  getPerson()
}))

(注:修正了原代码中的语法错误,包括字符串引号冲突、Array.from参数括号问题及Promise大小写)

对应的疑问:

  • 是否每次调用getPerson()都会同步执行connection.Query(),由C++ API发送请求后事件循环继续,可再次调用发送新查询?是否存在我未注意到的限制?
核心疑问

为何在上述场景中使用单连接处理多查询不可行?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 15:29:57