中并发控制(数据库)

什么叫中等并发?不是高并发,不是低并发

并发度 说明 典型方案
高并发 短时间内的大量并发冲突 秒杀活动 redis缓存 + 串行化 + 异步
低并发 TPS很低。基本没有并发冲突 后台配置系统 不需要处理/悲观锁/乐观锁
中并发 TPS比较平均,且有一定的并发冲突。 一般性的事务性系统。订单,库存,支付 下面详细介绍

并发需要解决的两大问题:

  1. 竞态条件


    竞态条件.jpg

并发策略

策略 并发度
带边界更新 update inventory set stock = stock - 1 where stock > 0 ****
CAS update order set status = 'confirmed' where status = 'init' ***
版本号 update user set age = 18, version = version + 1 where version = ? **
悲观锁 select for update/update/delete *
  1. 幂等


    幂等.jpg

幂等策略

场景 策略
插入幂等 检测duplicated key冲突 unique key(ordersn); insert into order(ordersn, ...) values ('SNXXX1', ...)
删除幂等 天然幂等 delete from order where ordersn = 1
更新幂等 更新失败后检测值 update order set status = 'confirmd' where status = 'init'; if updated = 0; select status from order; if status = 'confirmed' return true
更新幂等 带外部流水号,插入日志表,检测duplicated key冲突 insert into order_action(sequence, ...) values('流水号',...); update order set status = 'confirmd' where status = 'init';

你可能感兴趣的:(中并发控制(数据库))