当前位置: 代码迷 >> Sql Server >> 表数据删除超时有关问题
  详细解决方案

表数据删除超时有关问题

热度:1   发布时间:2016-04-24 09:37:25.0
表数据删除超时问题
在.net编程中,按时间段用sql语句删除(delete)表记录的时候,每次大概删除2万条,经常出现以下错误,导致删除失败:
“错误信息:超时时间已到。在操作完成之前超时时间已过或服务器未响应。”
请问如何解决删除大量数据导致时间过长问题?
------解决思路----------------------
纯删?还是有一定的逻辑?另外是否会出现多会话同时删一批数据?
------解决思路----------------------
超时时间已到。在操作完成之前超时时间已过或服务器未响应
这个错误也有很大一部分,是因为锁表,你有上事务进行操作吗?
------解决思路----------------------
与.net 没什么关系, 你应该用日志把失败时的SQL语句及参数及值记录下来
很可能是因为删除的条件比较复杂导致的
你把删除的条件, 用 select 直接执行一下看一下, 看有没有什么可以优化的地方, 或者贴出来给大家看看
------解决思路----------------------
2W 条数据并不是很大,这 2 W 条数,是按某个条件统一删除,还是逐条判断删除 ?
------解决思路----------------------
引用:
纯删?还是有一定的逻辑?另外是否会出现多会话同时删一批数据?


问下 这种情况 能调超时时间吗
我们也有个一个库,库里面有个表,业务比较多,各种调用 插入,读取等等。
所以我们ERP 有个界面就是查询这个表的老是提示连接超时。这个能把时间调长点吗?
------解决思路----------------------
程序的 Connection 对象 ConnectionTimeout 属性默认 15 秒,可以按需要改大点。
------解决思路----------------------
引用:
程序的 Connection 对象 ConnectionTimeout 属性默认 15 秒,可以按需要改大点。


这个是指连接超时,不是操作超时.
------解决思路----------------------
建议把删除语句写到存储过程中吧,另外在存储过程中删除完毕后对表重建索引,然后每次.net编程中调用存储过程
------解决思路----------------------
估计是删除log表时其他连接同时在插入记录吧。
尽量把这个删除任务放在晚上没有业务的时段执行。
[datetime]字段要建索引。
所有插入log表的地方要么不要用事务、直接插入,要么插入日志是事务的最后一个语句。尽量减少log表的锁。
------解决思路----------------------
有没有业务功能在记日志的时候使用事务呢?
如果有,如同#13
像这种会被很多地方操作的表尽量不要用事务~~

如果没有, SQLSERVER好像也确实存在这样的问题,删除过多数据就会出问题, 

最后, 如果你要的数据不多的话, 你可以先备份要的数据, 然后 TRUNCATE TABLE 表名, 这个删数据神速
然后,再把备份的数据重新插进来, 这样虽然麻烦, 但就算有一万行是要的数据速度应该还是比较高的~
  相关解决方案