使用乐观锁的问题
来源:5-4 数据库问题

bbmouse
2021-11-04
老师说:
事务的性能太慢怎么办?
考虑使用乐观锁
意思是不开启事务去select得到结果,然后也不开启事务的去update,因为没有开启事务,所以缓解了事务太慢的现象吗?这里没太懂,因为一般乐观锁是和分布式锁一起考虑,用其中之一,不知道还能解决事务太慢?
还有一个想问下老师,比如spring里面,方法不加@transactional注解的话,应该不会开启事务,如果不开启事务,去读的话按照什么规则呢?能不能读到别人事务里做的改变?(此时没开事务,应该没有隔离级别把,)
写回答
1回答
-
ccmouse
2021-11-10
事务的开销是很大的。不加事务能提高不少效率。但代价就是同学说的“没有隔离级别”,其实是我读和写之间没有保护。我读到的始终是当前数据库别人最新commit进来的数据。
所以“乐观锁”,我们通过时比如间戳,或者版本号来进行保护,保证我们的数据从读进来到修改这段时间内没有被别人改过。这里产生另一个代价,如果此时不幸被别人改了,我们的这个“先读后写”的操作就会失败。
022021-11-11