oracle 并行处理问题

业务是这样的,在一个方法中先取出前100条记录且status字段为0,接着就把这100条记录的status字段设置为1,然后进行下一步操作。上线的时候把这个工程部署到两台... 业务是这样的,在一个方法中先取出前100条记录且status字段为0,接着就把这100条记录的status字段设置为1,然后进行下一步操作。
上线的时候把这个工程部署到两台机器上,当两台机器启动后,必然在某一时间点会取出一样的数据,怎么样避免这样的情况?不让取同样的数据。
展开
 我来答
supper_1234
2012-03-30 · TA获得超过2846个赞
知道答主
回答量:299
采纳率:100%
帮助的人:151万
展开全部
使用分页SQL啊,先建立一个flag字段,作为标志位
步骤一:
机器A:
以主键asc排序,取前100,修改,将flag置一
机器B:
已主键asc排序,取100-200,修改,将flag置一
步骤二:
机器A:
待所有的机器的SQL都运行完之后,取flag为0的前100数据,修改,置一
机器B:
取flag为0的100-200数据,修改,置一
步骤三:
循环

你的这个问题有点偏向于理论,生产环境下不会那么巧合,碰到这种情况

PS:又看了一下你的问题,你的意思是不是并发环境下的一致性控制的问题啊,如果是的话,建议你去搜一下"oracle 当前读"关键字,可能会对oracle并发控制的原理有一定的了解

希望对你有帮助
牛角山麦子
2012-03-28 · TA获得超过1554个赞
知道小有建树答主
回答量:651
采纳率:75%
帮助的人:534万
展开全部
你这个问题很奇怪。。。 想不出是什么样的业务会有这种需求?能描述一下么?
从技术上来说,有2个办法
1. 前一个机器取完之后,就删掉取出的数据
OR
2. 在表里设置一个标志段,前一个取完之后,把标志段设置为已经取过。后边的就取没取过的好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wanghao_kjlink
2012-03-28 · TA获得超过607个赞
知道小有建树答主
回答量:561
采纳率:100%
帮助的人:266万
展开全部
.....oracle并行处理问题解决.....(有意思的问题么?)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式