在 NodeJS 应用程序中,当涉及事务时,管理连接数的最佳策略是什么(mysql 社区版)?
所以,这是我的思路-
1) 不要将控制权移交给 ORM 2) 将连接视为昂贵的商品 3) nodejs 的 mysql 模块似乎正在创建更多连接
假设,如果同时执行 n 个 promises(理解为单线程部分),每个都代表一个事务,我不希望它们中的每一个都创建 n 个连接——这很明显——但是当一个事务发生时会发生什么如果在 promise 之间共享连接,则需要回滚连接吗? ..我不希望一个事务在另一个事务也失败时失败..我希望“连接”对象更智能一些..这样当调用 beginTransaction 时,它提供了一个本地化的上下文......但是只是想确认是否是这种情况 - 我正在寻找一些文档。如果没有,某种 FIFO 队列来促进对这些事务进行排序似乎是前进的方向——但我们不是已经有了一个吗?你们还部署了哪些其他策略?
最佳答案
我会向您推荐 KnexJS,尤其是因为它的 transaction supprt和内置 connection pooling .我确信 Sequelize 也会以某种方式处理这个问题。
knex 的好处是您可以通过您的 promise 链传递此 事务
对象,如果任何 promise 失败(即使是非数据库错误,如业务规则! ) 交易 promise 将被拒绝,一切都会自动回滚。
我希望这对您有所帮助,并且到目前为止对我们来说“刚刚好”——我们目前不需要深入研究连接池的管理。
关于mysql - NodeJS 数据库(mysql)连接与事务管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47595925/