乐观锁和悲观锁

乐观锁和悲观锁的意思

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

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

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

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

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

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

悲观锁特点

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

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

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

相关推荐
九分源码1 小时前
基于PHP+MySQL组合开发开源问答网站平台源码系统 源码开源可二次开发 含完整的搭建指南
mysql·开源·php
程序员岳焱2 小时前
Java 与 MySQL 性能优化:MySQL分区表设计与性能优化全解析
后端·mysql·性能优化
天天摸鱼的java工程师2 小时前
MySQL表设计实战指南:从业务场景到表结构优化
java·后端·mysql
刺客xs3 小时前
MySQL数据库----DML语句
数据库·mysql
Brookty5 小时前
【MySQL】JDBC编程
java·数据库·后端·学习·mysql·jdbc
_代号0075 小时前
MySQL梳理一:整体架构概览
后端·mysql
码不停蹄的玄黓6 小时前
深入拆解MySQL InnoDB可重复读(RR)隔离级别:MVCC+临键锁如何「锁」住一致性?
数据库·mysql·可重复读
用户91453633083916 小时前
MySQL查询执行顺序:一张图看懂SQL是如何工作的
mysql
Lx3527 小时前
MySQL物化视图:预计算查询结果的定期刷新
sql·mysql·性能优化
Lx3527 小时前
Mysql死锁日志分析:事务逻辑冲突的排查技巧
sql·mysql·性能优化