关于使用事务从数据库中读取似乎有非常不同的意见。
引自 DeveloperWorks 文章交易策略:模型和策略概述:
如果您只读取数据,为什么需要事务?答案是你没有。启动事务以执行只读操作会增加处理线程的开销,并可能导致数据库上的共享读锁(取决于您使用的数据库类型和隔离级别设置)。
作为相反的意见,以下引用来自 Hibernate 文档非事务性数据访问和自动提交模式
我们的建议是不要在应用程序中使用自动提交模式,并且仅在有明显性能优势或未来代码更改极不可能时才应用只读事务。无论您是读取还是写入数据,始终更喜欢使用常规 ACID 事务来对数据访问操作进行分组。
在 EclipseLink 邮件列表上也有类似的争论。
那么真相在哪里呢?用于阅读最佳实践的交易是否是最佳实践?如果两者都是可行的解决方案,那么使用事务的标准是什么?
据我所知,只有在隔离级别高于“已提交读”时才会有所不同。它是否正确?
有哪些经验和建议?