Spring MongoDB中@Transactional(readOnly = true)的作用是什么

问题描述 投票:0回答:1

据我所知,当在 MongoDB 中使用 WiredTiger 存储引擎的事务时,隔离级别固定为快照。

如果我使用@Transactional(readOnly = true),它允许基于事务开始时创建的快照进行一致读取。另一方面,如果我不使用@Transactional(readOnly = true),则根据readConcern提供读取一致性。我的理解正确吗?

另外,我很好奇使用 Spring MongoDB 的开发人员在执行只读操作时是否通常使用 @Transactional(readOnly = true) 。我还想知道使用 @Transactional(readOnly = true) 是否会影响性能。

mongodb spring-boot spring-transactions spring-mongodb
1个回答
0
投票

有一些好处。当使用 (readonly=true) 选项时,hibernate 的会话刷新模式设置为 MANUAL,因此 Hibernate 不会在持久化上下文中管理该数据,不会发生脏检查和快照,也不会设置事务 id。

如果在数据库复制中使用主数据库和其他一些从数据库,使用该选项可以通过使用从数据库调用 select 来减少主数据库的负载。

© www.soinside.com 2019 - 2024. All rights reserved.