中并发控制(数据库)

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

并发度 说明 举🌰 典型方案
高并发 短时间内的大量并发冲突 秒杀活动 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';
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 协调多用户数据库系统中事务的同时执行被称为并发控制。并发控制的目的是确保多用户数据库环境中事务的可序列化性。为了实...
    ebook_sea阅读 1,079评论 0 0
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,588评论 16 22
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,620评论 0 11
  • 可爱进取,孤独成精。努力飞翔,天堂翱翔。战争美好,孤独进取。胆大飞翔,成就辉煌。努力进取,遥望,和谐家园。可爱游走...
    赵原野阅读 2,795评论 1 1
  • 在妖界我有个名头叫胡百晓,无论是何事,只要找到胡百晓即可有解决的办法。因为是只狐狸大家以讹传讹叫我“倾城百晓”,...
    猫九0110阅读 3,358评论 7 3