乐观锁和悲观锁

乐观锁和悲观锁的意思

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

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

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

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

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

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

悲观锁特点

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

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

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

相关推荐
原来是猿7 分钟前
MySQL 在 Centos 7环境安装
数据库·mysql·centos
Bdygsl1 小时前
MySQL(6)—— 视图
数据库·mysql
Mr.45672 小时前
JDK17+Druid+SpringBoot3+ShardingSphere5 多表分库分表完整实践(MySQL+PostgreSQL)
java·数据库·spring boot·mysql·postgresql
乐hh2 小时前
清理MySQL数据
数据库·mysql
qiumingxun3 小时前
mysql的分区表
数据库·mysql
李昊哲小课3 小时前
aiomysql 完整实战教程
python·mysql·pymysql·aiomysql
Bat U3 小时前
MySQL数据库|CRUD
数据库·mysql
qq_283720054 小时前
MySQL技巧(八) :死锁解决与实战案例
mysql·索引·锁机制·顺序·死锁
缘来是黎4 小时前
prom QL
mysql
程序员夏末4 小时前
【MySQL | 第二篇】 MVCC的底层实现(多版本并发控制)
数据库·sql·mysql