阿里二面:@Transactional(readOnly=true) 有什么用?能不能提高查询性能?

作者: 徐庶说技术分类: 计算机技术 发布时间: 2024-03-22 16:22:43 浏览:5353 次

阿里二面:@Transactional(readOnly=true) 有什么用?能不能提高查询性能?

Chris0716:
问老师一个问题,如果数据库层面已经设置了隔离级别,代码里面只做查询的话是否还需要加事务注解@Transaction呢?

【回复】个人认为一般情况下不需要,如果做比较多的复杂查询且结果相互依赖的情况下可以酌情加上,保证数据的一致性
Sneakerh3ad:
懂了,跟查询性能没关系,主要是开启事物保证隔离级别

AI头脑风暴:
一、介绍@Transactional(readOnly=true)的作用 - 解释@Transactional(readOnly=true)可确保查询操作不会对数据库进行更新。 - 提到在只读操作时使用@Transactional(readOnly=true)可以提供一定程度的性能优化。 二、关键词 - @Transactional - readOnly=true - 查询性能 - 作用 - 提高 - 可靠性 - 数据库更新 - 性能优化 - 代码笔记 - 视频配套 三、总结 - @Transactional(readOnly=true)在查询操作中的作用及性能优化。 - 视频中详细解释了使用@Transactional(readOnly=true)的好处。 - 代码笔记和视频配套可以帮助理解和学习@Transactional(readOnly=true)的用法。 - Powered by https://brainstorm.cool 下一代 AI 搜索引擎

sunrfid:
使用Transactional会复用session,从而避免向数据库发出重复查询(如相同id)吧

奔腾Tualatin:
实际上开启了事务就能保证rr隔离级别,并不需要设置只读

迁客骚人i:
如果是为了可重复读而加上readonly = true,那么在RR隔离级别下,加了readonly = true的方法里是否可以直接复用上一次查询的结果而不进行重复查询呢?

【回复】回复 @奔腾Tualatin : 他问的就是直接复用上一次查询的结果而不进行重复查询,readonly = true并不会,rr级别下只会保证一致性非锁定读每次查询的结果一致,而这是事务隔离级别决定的
【回复】回复 @橙汁的社保时间 :mybatis一级缓存只对同一个查询生效,而rr隔离级别可不是
【回复】如果dao层用的是mybatis的话,个人认为此时起作用的是mybatis的一级缓存,而不是readonly = true
努力赚钱养只喵:
老师请问一下,那我在只包含查询操作的业务方法上添加transaction注解,但不设置read only。是不是也可以做到了事务隔离,同时在数据库层面也没有增删改[喜极而泣]

【回复】这个注解有默认隔离级别吧,不设我记得是可重复读

科技猎手 科技 查询性能 @Transactional @Transactional(readO 面试 计算机技术 java spring事务 spring面试题

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

更多相关阅读