一.行锁是一种悲观锁
为防止被其他人修改。同一时间只能单向进行修改操作
1.假设数据会被其他人修改,先把坑占了
2.先上锁,再更新,完成后释放锁
3.适合写多和写冲突比较多的场景
使用方法:
在数据库事务中锁定操作行可使用 for update
例:select * from t where id = ? for update
优点:稳定可靠,不会出现超卖
缺点:
1.需要查询和计算:性能差、锁阻塞等待
2.锁阻塞等待会导致客户端延迟或超时
二.乐观锁
1.假设数据不会被其他人修改,只有自己操作时验证一下
2.CAS:先比较,再更新
3.适合写少和写冲突少的场景
case
when 列名= 条件值1 then 选项1
when 列名=条件值2 then 选项2…
else 默认值 end
例:
根据这个国家人口数据,统计各个大洲的人口数量
事务锁方案
最新推荐文章于 2024-07-19 23:47:09 发布