问题描述
对于永远不会变得太大的表,仅使用jdbiExecutor::executeInTransaction
而不是jdbiExecutor::execute
有什么缺点吗?
我正在尝试简化一个非常大而复杂的代码,以便新开发人员可以更快地投入使用。如果性能没有显着差异(即使这样,在这里解决该问题还为时过早优化),那么我想编写一个仅使用jdbiExecutor::executeInTransaction
的实用程序。
解决方法
PostgreSQL服务器在自动提交模式下运行,因此使用显式事务不仅会导致COMMIT
语句发送到数据库,还会导致BEGIN
语句开始显式事务。
这意味着您每笔交易最多可以进行2次额外的客户端-服务器往返。
仅在需要将多个语句捆绑到一个事务中时才使用显式事务,这可能会提高性能。
我将运行一个简单的基准,以查看影响是否显着;如果没有,请继续简化您的代码。