请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

使用乐观锁的问题

老师说:
事务的性能太慢怎么办?
考虑使用乐观锁

意思是不开启事务去select得到结果,然后也不开启事务的去update,因为没有开启事务,所以缓解了事务太慢的现象吗?这里没太懂,因为一般乐观锁是和分布式锁一起考虑,用其中之一,不知道还能解决事务太慢?

还有一个想问下老师,比如spring里面,方法不加@transactional注解的话,应该不会开启事务,如果不开启事务,去读的话按照什么规则呢?能不能读到别人事务里做的改变?(此时没开事务,应该没有隔离级别把,)

正在回答 回答被采纳积分+3

1回答

ccmouse 2021-11-10 19:59:54

事务的开销是很大的。不加事务能提高不少效率。但代价就是同学说的“没有隔离级别”,其实是我读和写之间没有保护。我读到的始终是当前数据库别人最新commit进来的数据。

所以“乐观锁”,我们通过时比如间戳,或者版本号来进行保护,保证我们的数据从读进来到修改这段时间内没有被别人改过。这里产生另一个代价,如果此时不幸被别人改了,我们的这个“先读后写”的操作就会失败。


0 回复 有任何疑惑可以回复我~
  • 提问者 bbmouse #1
    老师,那规避这个开销具体好处体现在哪里呢,是指可以加快查询速度,修改速度吗?或者是执行sql的速度?
    其实没理解这个开销指的是IO的开销还是什么开销,提高效率指的是提高哪方面的效率呢
    回复 有任何疑惑可以回复我~ 2021-11-11 15:12:08
  • ccmouse 回复 提问者 bbmouse #2
    这个开销是锁的开销,以及事务本身在启动以及commit的时候所需要分配和释放的资源。
    回复 有任何疑惑可以回复我~ 2021-11-11 21:18:01

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信