七:Mysql的乐观锁与悲观锁机制

悲观锁:数据库

    开始在执行前就会认为数据可能出现竞争,直接加锁,它是依靠数据库的锁来实现,可是缺点也很明显:并发

若是悲观锁加锁的时间过长,其余用户就会没法访问,大大下降了程序的并发性能,由于依靠数据库的锁来实现,因此数据库的开销也会比较大。因此有了乐观锁的实现性能

乐观锁:io

    相对于悲观锁来讲,乐观锁会认为数据开始不会发生竞争,只有在数据进行更新提交的时候,才会对数据进行冲突检查,若是冲突了就会返回冲突信息,那么通常是如何实现的,主要有一下两种:程序

1:经过版本号的方式控制时间戳

在查询的时候查询出旧的version,在更新的时候会对旧的version进行加1操做,在数据更新的时候,经过where条件进行判断,版本号是否是和预期的一致,若是不是返回错误,若是是的话直接更新。数据

2:经过其余字段,好比时间戳方式查询

以时间戳的方式,和版本号差很少,不过就是时间戳是实时获取的,更新的时候对于时间戳。时间

可是在乐观锁环境中可能出现用户提交不成功一致提交的过程,也会下降系统的性能错误

相关文章
相关标签/搜索