乐观锁总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间是否有别人更新了这条数据。也就是先查询出那条记录,获取出version字段,如果要对那条记录进行操作(更新),则先判断此刻数据库中的version的值是否与刚刚查询出来时的version的值相等,如果相等,则说明这段期间,没有其他人对其进行操作,则可以执行更新,将version字段的值加1;如果更新时发现此刻的version值与刚刚获取出来的version的值不相等,则说明这段期间已经有其他人对其进行操作了,则不进行更新操作,从而确保数据的一致性。乐观锁一般会使用版本号机制或 CAS 算法实现。悲观锁就是每次去拿数据时都会上锁,其他人会被阻塞住,直到当前操作释放锁,比如行锁,表锁等,读锁,写锁等,都使用了该锁。