阿里二面:@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。是不是也可以做到了事务隔离,同时在数据库层面也没有增删改[喜极而泣]
【回复】这个注解有默认隔离级别吧,不设我记得是可重复读