乐观锁和悲观锁

乐观锁和悲观锁的意思

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

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

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

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

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

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

悲观锁特点

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

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

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

相关推荐
@淡 定3 小时前
MySQL MVCC 机制解析
数据库·mysql
DBWYX3 小时前
MySQL 进阶 面经级
数据库·mysql
靠近彗星5 小时前
基于 Vue + Django + MySQL 实现个人博客/CMS系统
前端·vue.js·python·mysql·django
男Ren、麦根5 小时前
MySQL 复制与主从架构(Master-Slave)
数据库·mysql·架构
Stuild Stuil6 小时前
Mysql 字段值批量自增或自减(坐标系数据,(x,y))
java·javascript·mysql
morganmin7 小时前
(一)MySQL常见疑惑之:select count(*)和select count(1)的区别
数据库·mysql
zhangjin12227 小时前
kettle从入门到精通 第九十四课 ETL之kettle MySQL Bulk Loader大批量高性能数据写入
大数据·数据仓库·mysql·etl·kettle实战·kettlel批量插入·kettle mysql
深圳厨神8 小时前
mysql对表,数据,索引的操作sql
数据库·sql·mysql
hweiyu008 小时前
从JVM到分布式锁:高并发架构设计的六把密钥
jvm·redis·分布式·mysql·etcd
小陈又菜8 小时前
MySQL-触发器
数据库·mysql·database·触发器