【问题标题】:NodeJS database (mysql) connection vs. transaction managementNodeJS 数据库(mysql)连接与事务管理
【发布时间】:2018-05-15 17:00:25
【问题描述】:

在 NodeJS 应用程序中,当涉及事务时,管理连接数的最佳策略是什么(mysql 社区版)?

所以,这就是我的思路-

1) 不要将控制权交给 ORM 2)将连接视为昂贵的商品 3) nodejs 的 mysql 模块似乎正在创建更多连接

鉴于,如果 n 个 promise 同时执行(理解为单线程部分),每个 promise 代表一个事务,我不希望它们每个都创建 n 个连接——这很明显——但是当一个事务发生时会发生什么如果连接在承诺之间共享,是否需要在连接上回滚? ..如果另一个事务也失败了,我不希望一个事务失败..我希望“连接”对象更智能..这样当调用 beginTransaction 时,它提供了一个本地化的上下文......但是只是想确认是否是这种情况-我正在寻找一些文件。如果不是这样,某种有助于对这些事务进行均衡的 FIFO 队列似乎是前进的方向——但我们不是已经有了一个吗?你们还部署了哪些其他策略?

【问题讨论】:

标签: mysql node.js transactions promise connection


【解决方案1】:

我会向你推荐 KnexJS,尤其是因为它的 transaction supprt 和内置的 connection pooling。我确信 Sequelize 也会以某种方式处理这个问题。

关于 knex 的好处是,您可以通过您的承诺链传递这个 transaction 对象,并且如果任何承诺失败(即使来自非数据库错误,如业务规则!)交易承诺将被拒绝,一切都会自动回滚。

我希望这对您有所帮助,并且到目前为止对我们“刚刚奏效” - 我们目前不需要深入研究连接池的管理。

【讨论】:

  • 谢谢 Clay - 会看看
猜你喜欢
  • 1970-01-01
  • 2012-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-01
  • 1970-01-01
相关资源
最近更新 更多