
请你说说乐观锁和悲观锁
乐观锁
每次都默认最好的情况,每次拿数据的时候都认为别人不会修改,所以上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制和CAS算法实现。 乐观锁多用于读应用类型,提高吞吐量。
悲观锁
总是假设最坏的情况,每次拿数据的时候都认为别人会修改,所有每次都要上锁,比如行锁、表锁、读锁、写锁都是在操作之前上锁。
适用场景
乐观锁:版本控制器SVN GIT等都是使用乐观锁。
悲观锁:是需要排队等待的,悲观的好处是减少并发,也限制了吞吐量,当并发量大的时候由于锁消耗资源,锁定时间长会导致性能下降,资源内耗严重,所以适用在并发了不大的情况。