knex.transaction() 内部发生了什么

What happens internally on knex.transaction()

我想为每个传入请求从中间件向我的请求参数添加一个 knex 事务。

knex.transaction() 的性能如何?它会做一些昂贵的事情,比如打开数据库连接吗?

提前致谢! :)

Knex交易火热开启。因此,当您调用 knex.transaction 时,它会立即从池中保留数据库连接,即使您没有向那里发送任何查询。

此外,如果您正在创建隐式打开的事务,请记住确保它会被提交/回滚。否则他们会在请求被处理并填满连接池后保持存活。

因此,您可以考虑公开 req.trx() 中间件,而不是总是打开事务,这将在您第一次调用它时懒惰地创建单例事务...