程序的结构大概是这样:for(int i=0;i<10000;i++)
{
cn.execute("update .... where id="+i);
sleep(1);
}
另一个线程以每秒2次的频率向同一个表中写记录。此时写记录的线程没有任何问题,但是上面那个循环在执行100次左右的时候之后就全报超时,这是为什么??程序的结构之所以设计成这样,是因为一次性UPDATE10000条数据的话会比较慢导致锁表。
该表所有记录为30000条

解决方案 »

  1.   

    30000条就慢这个表怎么设计的  有多少字段用的什么数据库??但是上面那个循环在执行100次左右的时候之后就全报超时,这是为什么??
    因为SQL有连接限制
    程序的结构之所以设计成这样,是因为一次性UPDATE10000条数据的话会比较慢导致锁表。
    更新的时候使用 table锁 就不会锁表了
    因为在更新的时候有人在做 其他操作 冲突了 
      

  2.   

    楼主初衷考虑得很好,但是楼主为什么不考虑,把这个处理,放到数据库里去处理,避免超时.
    对于你说的防止死锁,可以在数据库的循环处理中使用WAITFOR DELAY 的语句,一样可以达到效果.