读书人

多纯程读取mysql时如何保证不重复读

发布时间: 2012-05-06 16:15:43 作者: rapoo

多纯程读取mysql时,怎么保证不重复读取
mysql表thread
id tid state

我现在开启多个线程读取thread中的state为0的纪录去操作其它表,每个线程操作完毕时把state写为1,表示这纪录已读,但还是出现很多重复读取的情况,有什么方法可以保证不重复读取数据呢

[解决办法]
每个线程读取的时候先判断一下state的值是否为0 如果是则写入1 如果不是则不做操作

但是多线程读取 同时都读到0也是有可能的 应该怎么做呢? 我记得有个lock关键字 不知道是否能帮上忙
[解决办法]
存储过程
[解决办法]
数据库读取的时候,给数据库的行加上一个ROWLOCK,更新完了在释放这个锁,这样就避免了多线程同时读到同一行的问题
[解决办法]
最好不要给数据库太多压力 提供个思路参考下
弄个调度线程专门负责读取status为0的 和修改为1 和安排任务

读书人网 >C#

热点推荐