一、锁的出现,是由于并发读写同一个数据的时候,须要进行数据完备性的保护,避免脏读、脏写等。数据库
二、乐观锁,须要在事务中加锁,在读取数据的时候,没必要在乎数据是否已经被修改了(即容许脏读);可是在写入数据的时候,要检查数据是否已经被修改了(能够经过版本号等机制控制),若是被修改那么就通知事务调用者,事务失败了。并发
三、悲观锁,须要在事务中加锁,在读取、写入数据的时候,都须要考虑数据是否已经被修改,若是被修改了,那么就通知事务调用者,事务被阻塞了,进入等待状态。分布式
四、从性能上看,乐观锁性能会高一些,由于悲观锁要检查更多的数据变更状况,并且还会存在阻塞。性能
五、从使用场景上看,悲观锁通常用于要求很强的数据一致性的系统,读写都不容许“脏”,乐观锁通常用于一致性稍弱的系统,不容许脏写,可是容许脏读。spa
概念引伸:数据库的各类锁,分布式系统的CAP原则。事务