多纯程读取mysql时,怎么保证不重复读取

lshfong 2012-04-11 08:54:51
mysql表thread
id tid state

我现在开启多个线程读取thread中的state为0的纪录去操作其它表,每个线程操作完毕时把state写为1,表示这纪录已读,但还是出现很多重复读取的情况,有什么方法可以保证不重复读取数据呢
...全文
225 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
烟灰洒落键盘 2012-04-11
  • 打赏
  • 举报
回复
数据库读取的时候,给数据库的行加上一个ROWLOCK,更新完了在释放这个锁,这样就避免了多线程同时读到同一行的问题
cheng2005 2012-04-11
  • 打赏
  • 举报
回复
存储过程
orochiheart 2012-04-11
  • 打赏
  • 举报
回复
每个线程读取的时候先判断一下state的值是否为0 如果是则写入1 如果不是则不做操作

但是多线程读取 同时都读到0也是有可能的 应该怎么做呢? 我记得有个lock关键字 不知道是否能帮上忙
www7788softcom 2012-04-11
  • 打赏
  • 举报
回复
最好不要给数据库太多压力 提供个思路参考下
弄个调度线程专门负责读取status为0的 和修改为1 和安排任务

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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