多纯程读取mysql时,怎么保证不重复读取
mysql表thread
id tid state
我现在开启多个线程读取thread中的state为0的纪录去操作其它表,每个线程操作完毕时把state写为1,表示这纪录已读,但还是出现很多重复读取的情况,有什么方法可以保证不重复读取数据呢
------解决方案--------------------
每个线程读取的时候先判断一下state的值是否为0 如果是则写入1 如果不是则不做操作
但是多线程读取 同时都读到0也是有可能的 应该怎么做呢? 我记得有个lock关键字 不知道是否能帮上忙
------解决方案--------------------
存储过程
------解决方案--------------------
数据库读取的时候,给数据库的行加上一个ROWLOCK,更新完了在释放这个锁,这样就避免了多线程同时读到同一行的问题
------解决方案--------------------
最好不要给数据库太多压力 提供个思路参考下
弄个调度线程专门负责读取status为0的 和修改为1 和安排任务