乐观锁和悲观锁应用的场景不同,悲观锁更注重数据安全,更新数据前,读取数据时先利用数据库的锁机制将该数据行进行锁定,直到事务提交才释放,强调安全性,持有锁时间长,并发效率在某些场景效率不高;
乐观锁在最后提交的时候才去比较数据版本号,锁持有时间短,并发效率高,但是如果出现大量的数据冲突,会导致大量交易失败,所以乐观锁应用的前提应该是该业务场景下数据冲突的概率很小。
所以还是要结合业务场景和特点,在安全性保证的前提下,考虑使用乐观锁还是悲观锁,我们行大部分业务场景都是采用的悲观行锁,通过其他途径去提升并发效率,比如大事务改小事务,事务中锁尽量往后放等。
分布式数据库比集中式数据库有个全局一致性读的特殊性,现在分布式数据库通过增加全局时间戳组件实现了全局一致性读,能满足数据“强一致性”的要求。