乐观锁和悲观锁

乐观锁和悲观锁的意思

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

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

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

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

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

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

悲观锁特点

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

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

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

相关推荐
一只栖枝1 小时前
关于OCP认证:有Oracle和MySQL两种
数据库·mysql·oracle·开闭原则·数据管理·ocp认证
爱编程的小新☆2 小时前
【MySQL】数据类型和表的操作
java·数据库·mysql
Ten peaches3 小时前
苍穹外卖(缓存商品、购物车)
spring boot·redis·mysql·缓存
聪明的墨菲特i3 小时前
SQL进阶知识:七、数据库设计
数据库·sql·mysql·oracle·db2·数据库设计·范式
菠萝崽.6 小时前
安装docker,在docker上安装mysql,docker上安装nginx
java·mysql·nginx·docker·软件工程·springboot·开发
柏油12 小时前
MySQL InnoDB 行锁
数据库·后端·mysql
A-Kamen12 小时前
MySQL 存储引擎对比:InnoDB vs MyISAM vs Memory
数据库·mysql·spark
尽兴-13 小时前
Mac 「brew」快速安装MySQL
mysql·macos·adb·brew
篱笆院的狗14 小时前
MySQL 中 SQL 语句的详细执行过程
数据库·sql·mysql
漫步向前17 小时前
28.mysql读写分离
mysql