目录
1. 悲观锁
- 1、悲观锁
一种悲观态度来防止一些数据冲突。工作机制:
在修改数据A之前把数据锁住-->进行读写操作(期间其他任何人都不能读、写)-->完了释放锁-->其他人才可继续读、写数据 A
- 2、悲观锁特点
可以完全保证数据的独占性和正确性
缺点是性能不高:频繁的加锁、释放锁的过程,会造成资源消耗
2. 乐观锁
- 3、乐观锁
对数据冲突保持一种乐观态度,操作(读、写)数据时不会对操作的数据进行加锁(使得多个任务可以并行对数据操作)。
只要到提交的时候才通过一种机制(例如通过版本号对比实现)来验证数据是否存在冲突。
- 4、乐观锁特点
是一种并发类型的锁,其本身不对数据加锁,而是通过业务实现锁的功能。不加锁意味着运行多个请求同时访问数据,同时也省掉了加锁、解锁的过程。这种方式大大提高了数据操作的性能。
例如使用版本控制来实现乐观锁的的sql语句如下
SQL语句:update A set Name=lisi,version=version+1 where ID=#{id} and version=#{version}
3. 参考资料