- 悲观锁
- 什么是悲观锁
- 所谓悲观锁,顾名思义就是以悲观的姿态来防止一切数据冲突。当修改数据的时候,先把数据锁住,在其释放这个锁前拒绝其他任何对此数据的操作
- 特点
- 保证数据的独占性和正确性
- 由于每次的请求都会先对数据进行加锁,然后再进行数据操作,最后再解锁。这个过程造成了很多的小号,所以效率不高
- 手动加悲观锁
- 读锁与释放锁
- 读锁:LOCK TABLES TEST_DB READ
- 释放锁:UNLOCK TABLES
- 写锁和释放锁
- 写锁:LOCK TABLES TEST_DB WRITE
- 释放锁:UNLOCK TABLES
- 读锁与释放锁
- 什么是悲观锁
- 乐观锁
- 什么是乐观锁
- 乐观锁是对于数据冲突保存着一种乐观的态度,操作数据的时候不会对其进行加锁,到了提交数据的时候会通过一种机制来验证数据是否存在冲突
- 特点
- 乐观锁是一种并发类型的锁,其本身是不对数据加锁的。于是就大大的提高了数据操作的性能,允许多个任务可以并行的对数据进行操作
- 一般实现验证机制使用的是加版本号的对比方式
- 举例:
- 假若现在存在以下数据:
- 这个时候来了操作2,它在操作1还没有提交的时候拿出来本条数据,然后修改了姓名为zhaoliu,然后在操作1操作提交之后再想去提交的时候,由于SQL语句为:update A set Name=zhaoliu,version=version+1 where ID=#{id} and version=#{version}
- 这个version已经被更新了,无法进行此操作,所以产生冲突,提交失败
- 图示:
- 操作1已经将姓名改为了wangwu,并且修改了版本号为2
- 什么是乐观锁
乐观锁与悲观锁
最新推荐文章于 2025-07-24 12:47:17 发布