【问题标题】:MySQL connection pool on NodejsNodejs 上的 MySQL 连接池
【发布时间】:2016-01-26 18:31:43
【问题描述】:

如果Node是单线程的,那么使用池连接MySQL有什么好处?
如果是,我应该什么时候释放连接?

与整个应用程序共享相同的、持久的连接还不够吗?

【问题讨论】:

    标签: mysql node.js connection-pooling


    【解决方案1】:

    Nodejs 是单线程的,对。但它也是异步的,这意味着单线程触发多个 sql 查询而不等待结果。结果仅通过回调处理。因此,使用具有多个连接的连接池是有意义的。该数据库可能是多线程的,这使得并行化查询成为可能,尽管它们是连续触发的。但是,如果您不特别注意,则无法保证结果的处理顺序。

    关于连接释放的附录

    如果您使用连接池,那么您应该为每个查询从池中获取/释放每个连接。这里没有很大的开销,因为池管理底层连接。

    1. 从池中获取连接
    2. 查询
    3. 在回调中释放连接回池。

    【讨论】:

    • 感谢您以一种简单的方式... 在这种情况下剩下的唯一问题是我应该何时释放连接。
    • 如果您使用连接池,那么您应该为每个查询从池中获取/释放每个连接。这里没有很大的开销,因为池管理底层连接。所以从池中获取连接->查询->在回调中释放连接回池。
    • 哦……就这么简单吗?!再次感谢您...(请将此放在未来的答案中;D)
    • 当您的 Nodejs 应用程序的多个实例在同一台机器上运行时会怎样。这些单独的进程能否有效地共享同一个池,还是在调用进程中管理该池?
    • AFAIK 他们不会共享同一个池。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 1970-01-01
    • 2020-12-22
    • 2015-09-23
    • 2019-05-29
    • 1970-01-01
    相关资源
    最近更新 更多