求助,多任务并发执行时,为什么执行的同一个存储过程,有一个查询结果是0?

Millie_chen 2016-06-21 04:27:05
新人菜鸟,首次发帖求助~

最近在做商品库存同步任务,一个是增量同步任务,一个是全量同步任务,任务里的商品数据会有部分重复。

两个任务类似,都是先将要同步的数据插入一张队列表

然后调用同一个存储过程,存储过程是查询这张队列表中的数据,通过关联当前库存表计算后,得到一个最新的查询结果后同步库存,同步成功后再将同步的数据update到这张队列表中。

有个时间点两个任务同时执行了



然后悲剧了~其中一个任务的最新查询结果是0,所以库存就同步成0了~~~~(>_<)~~~~

单独执行存储过程,数据都是对的,没有出现0的情况,考虑是并发或锁表导致的,本菜鸟不知道怎么处理这种并发问题,请教各位大神~~
...全文
202 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐诗三百首 2016-06-21
  • 打赏
  • 举报
回复
最简单的方法就是错开2个作业的执行时间. 不过最后分析一下存储过程,看哪里互相影响到了.
Millie_chen 2016-06-21
  • 打赏
  • 举报
回复
多谢各位大神~刚开始发帖没搞明白怎么贴代码,我先试试优化存储过程
中国风 2016-06-21
  • 打赏
  • 举报
回复
这类操作最好别做异步处理 在存储过程封装 你要做增量和全量,表有没有更新日期或创建日期,或有大小列的唯一列如标识列 每次记录上次更新日期,接口取上次同步日期 到 当前系统日期 没有你的具体代码方法,只能给你解决思路
卖水果的net 2016-06-21
  • 打赏
  • 举报
回复
每次执行时,先成一个唯一码,比如 newid() 就很不错,每个过程操作数时,都加一个这个村记,可以有效的解决这种并发问题;

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧