为了账号安全,请及时绑定邮箱和手机立即绑定

查询后判断结果再进行数据操作,如何在并发情况下既保证性能,也保证数据一致

查询后判断结果再进行数据操作,如何在并发情况下既保证性能,也保证数据一致

莫回无 2018-08-23 21:01:23
问题描述数据库订单表中每个用户的记录有15种状态(12种状态码代表在途状态,3种状态码代表终结状态)。数据之间的状态可以进行流转。要求同一个用户的在途状态只能有一条记录,终结状态可以有多条记录。如何保证数据完整性问题出现的环境背景及自己尝试过哪些方法代码流程,在插入数据库之前进行数据查询,如果查询出当前用户没有在途状态的数据,则进行插入;如果查询出当前用户有在途状态的数据,则不插入。但是在同一个用户并发高的情况下,会出现数据不严谨的情况,这个大家都知道。如果是单节点的情况下,可以使用同步(synchronized)的方法解决数据完整性的问题,但是当同步的时候也阻塞了其他所有用户的操作,造成性能低下。
查看完整描述

1 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

1:使用数据库的唯一索引。
2:分布式锁。

查看完整回答
反对 回复 2018-08-26
  • 1 回答
  • 0 关注
  • 733 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信