乐观锁和悲观锁

乐观锁和悲观锁的意思

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

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

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

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

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

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

悲观锁特点

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

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

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

相关推荐
heze094 小时前
sqli-labs-Less-18自动化注入方法
mysql·网络安全·自动化
oh LAN10 小时前
提升性能:数据库与 Druid 连接池优化指南
数据库·mysql
Maggie_ssss_supp11 小时前
Linux-MySQL权限管理
linux·运维·mysql
独自破碎E12 小时前
MySQL中如何进行SQL调优?
数据库·sql·mysql
林九生13 小时前
【MySQL/PostgreSQL】MySQL 到 PostgreSQL 数据迁移:Docker + pgloader
mysql·docker·postgresql
heze0914 小时前
sqli-labs-Less-19自动化注入方法
mysql·网络安全·自动化
霖霖总总15 小时前
[小技巧37]解构 my.cnf:[client] 与 [mysql] 背后的加载逻辑与优先级
运维·mysql
liux352815 小时前
MySQL日志系统全面解析:从基础到高级管理(六)
数据库·mysql·oracle
Maggie_ssss_supp16 小时前
Linux-MySQL日志管理
数据库·mysql
熬夜敲代码的小N16 小时前
MySQL数据可视化实战:从SQL雕琢到图表绽放
sql·mysql·信息可视化