程序的结构大概是这样:for(int i=0;i<10000;i++)
{
cn.execute("update .... where id="+i);
sleep(1);
}
另一个线程以每秒2次的频率向同一个表中写记录。此时写记录的线程没有任何问题,但是上面那个循环在执行100次左右的时候之后就全报超时,这是为什么??程序的结构之所以设计成这样,是因为一次性UPDATE10000条数据的话会比较慢导致锁表。
该表所有记录为30000条
{
cn.execute("update .... where id="+i);
sleep(1);
}
另一个线程以每秒2次的频率向同一个表中写记录。此时写记录的线程没有任何问题,但是上面那个循环在执行100次左右的时候之后就全报超时,这是为什么??程序的结构之所以设计成这样,是因为一次性UPDATE10000条数据的话会比较慢导致锁表。
该表所有记录为30000条
解决方案 »
- 简单Select问题?
- SQL server 2005 用户审核失败问题求教求救!!!
- 数据库删除不了
- 关于字符编号的批量更新问题
- sqlserver中数据合并问题
- 我把SQL sql2000升级到2008执行SELECT比在2000下还要慢,帮我分析一下原因
- 如何处理SQL的更新,插入语句中的value既有双引号“"”又有单引号“'”
- 我用vc做一个作业,如何脱离sql server ?
- MS SQL Server 2000 的触发器里面可以执行跨数据库查询吗?
- 关于ACCESS的问题
- 在sql server 2005里面怎么样垂直分区啊??急!!!!!!!!!
- 艾,半天了想不出的SQL 语句?
因为SQL有连接限制
程序的结构之所以设计成这样,是因为一次性UPDATE10000条数据的话会比较慢导致锁表。
更新的时候使用 table锁 就不会锁表了
因为在更新的时候有人在做 其他操作 冲突了
对于你说的防止死锁,可以在数据库的循环处理中使用WAITFOR DELAY 的语句,一样可以达到效果.