乐观锁和悲观锁

乐观锁和悲观锁的意思

同一时间并发对同一个数据对象进行更新的问题,叫做丢失更新

乐观锁操作方法是在数据后面加一个version字段,当需要更新的时候,先查出version的值,更新的时候where条件判断version是否改变,如果没改变,说明没有冲突

悲观锁是在mysql事务基础上,在select sql后面加一个for update,确保锁住当前行

要使用悲观锁,必须关闭mysql数据库的自动提交属性,因为MySQL默认使用autocommit模式,也就是当你执行一个更新操作后,MySQL会立即将结果进行提交

共享锁,事务中给语句后面添加 lock in share mode

排它锁,事务中给语句添加 for update

悲观锁特点

为数据处理的安全提供了保证

效率上,由于处理加锁的机制会让数据库产生额外开销,增加产生死锁机会

在只读型事务中由于不会产生冲突,也没必要使用锁,这样会增加系统负载,降低并行性

相关推荐
天空之城夢主1 小时前
MySQL 全量、增量备份与恢复
数据库·mysql·oracle
依稀i1233 小时前
MySQL连接报SSL错误
数据库·mysql·ssl
kaede3 小时前
MySQL权限详解!
数据库·mysql
萝卜白菜。5 小时前
关于TongWeb数据源兼容mysql驱动的注意事项
java·mysql
进击的CJR5 小时前
MySQL 8.0 OCP 英文题库解析(十一)
mysql·adb·开闭原则
郝同学的测开笔记5 小时前
深入解析:如何优雅计算时间区间内的有效时长
后端·mysql·测试
平平无奇。。。8 小时前
Mysql库的操作和表的操作
linux·数据库·mysql
天天摸鱼的java工程师8 小时前
CTO新项目直接上MySQL 8.0,老系统仍是5.7
java·后端·mysql
阿火~8 小时前
【亲测有效】Mybatis-Plus中更新字段为null
数据库·mysql·mybatis
快乐肚皮8 小时前
MySQL集群模式详解:架构、优缺点与生产环境选型指南
java·mysql