仅在JDBI中始终使用事务是否有重大不利之处?

问题描述

对于永远不会变得太大的表,仅使用jdbiExecutor::executeInTransaction而不是jdbiExecutor::execute有什么缺点吗?

我正在尝试简化一个非常大而复杂的代码,以便新开发人员可以更快地投入使用。如果性能没有显着差异(即使这样,在这里解决该问题还为时过早优化),那么我想编写一个仅使用jdbiExecutor::executeInTransaction的实用程序。

解决方法

PostgreSQL服务器在自动提交模式下运行,因此使用显式事务不仅会导致COMMIT语句发送到数据库,还会导致BEGIN语句开始显式事务。

这意味着您每笔交易最多可以进行2次额外的客户端-服务器往返。

仅在需要将多个语句捆绑到一个事务中时才使用显式事务,这可能会提高性能。

我将运行一个简单的基准,以查看影响是否显着;如果没有,请继续简化您的代码。