有个表 里面假设有 四个字段
id(自增)  name varchar(20)  password varchar(10)   state int --0 为可用 1为不可用 现在取一部分数据1w--10w不等,取完后相应数据状态得变为1, 而且这些数据要写入文件 文件写入失败,状态又要变为可用 。而且是多线程的,又要防止取到重复数据。请问各位大神要有什么好的方案 既可以解决问题又可以高效处理。  
MySQL大数据多线程

解决方案 »

  1.   

    我的想法是 程序加同步锁防止重复取 ,方法里面取完xx---xx数据后放进另一个表,把原来表相应数据删除,完了写入文件失败后在往回插入到原来的表中这样想着效率就很低 ,拜托各位大神提供个好的方案 
      

  2.   


    能否详细点,id不连续呢。几万条或者几万条update的时候sql怎么写可以高效些。jdbc的批处理也很慢
      

  3.   

    放到1个事务中,
    更新state、写入文件,如不成功,回滚在更新state时,锁表
      

  4.   

    一次取一条select * from 有个表 where state =0 limit 1在state 上创建索引
      

  5.   

    我最近也遇到了。发现如果用WHERE 限定了id的话比用LIMIT 快。其他的就没有别的办法了