我想在每个传入请求的中间件中为我的请求参数添加一个knex事务。
knex.transaction()的性能如何?它是否像打开数据库连接一样成本高昂?
提前致谢! :)
答案 0 :(得分:0)
Knex交易急切地开启。因此,当您调用knex.transaction
时,它会立即从池中保留数据库连接,即使您没有在那里发送任何查询。
此外,如果您正在创建隐式打开的事务,请记住确保它将被提交/回滚。否则,在处理完请求后,它们将保持活动状态并填满连接池。
因此,您可以考虑公开req.trx()
中间件而不是始终打开事务,这会在您第一次调用它时懒惰地创建单例事务...