从Mysql里面随机取几条数据,更新这几天,怎么锁定?

yizhixiaozhu 2014-05-16 09:16:40
有个这样的需求,我想从mysql里面随机取10条数据出来,这个表里面有个状态表示是否已经被取出过,
flag=0的时候表示没有,1表示被取出了,
我随机取出10条后,要将这10条的flag字段改为1,
如果没有并发的话,就没事,但是考虑有并发的时候,

锁定代码还是锁定数据库?
有什么好的办法能解决这个问题没?
...全文
173 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dinghun8leech 2014-05-16
  • 打赏
  • 举报
回复
直接一条update把这10条数据flag改为1。
yizhixiaozhu 2014-05-16
  • 打赏
  • 举报
回复
对于程序来说 0点几秒已经比较长的时间了,如果为了减小这种情况的话,就一条一条的取 或者锁定java代码算了
darren中 2014-05-16
  • 打赏
  • 举报
回复
我个人觉得你不需要考虑这个 因为10条数据是非常小的数据量 A请求我查询了 又更改了 这中间就那么0点几秒钟 也就是B请求C请求不需要考虑这个 但是不考虑的前提是 你是查了后马上就改 并不是查出来后 进过了其他的业务逻辑 然后再去修改 这样的话就有问题了
yizhixiaozhu 2014-05-16
  • 打赏
  • 举报
回复
引用 1 楼 darrenzhong 的回复:
你随机取10条flag=0的就行了 你看看对么 这样的话每次都是单项的 不过这样的话 虽然没有数据冲突 但是还要看看你是不是每次必须操作10条flag=0的有效数据 如果按上面的话 可能有重复 比如可能某个请求改了10条 某个请求只改了8条 有2条相当于无用功
对,就是怕有重复。 随机取几条没问题,但是我要确保我取了的这几条,不能被别的线程取到,所以我就必须把取出来的这几条的flag字段改为1, 所以就想问问有什么好的办法,确保不取出重复的数据。
darren中 2014-05-16
  • 打赏
  • 举报
回复
你随机取10条flag=0的就行了 你看看对么 这样的话每次都是单项的 不过这样的话 虽然没有数据冲突 但是还要看看你是不是每次必须操作10条flag=0的有效数据 如果按上面的话 可能有重复 比如可能某个请求改了10条 某个请求只改了8条 有2条相当于无用功

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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